jackocnr
jackocnr

Reputation: 17416

Drupal 6 & Views 2 - DISTINCT field

I'm using the Feeds module to import lots of Feed Item nodes. Due to a malformed feed file, I'm getting lots of duplicates. I'm using a View to display these nodes, and need to be able to add a DISTINCT filter on the "Node: Post Date" field, so I only get 1 result for each post-date.

I will also look into tackling the problem at the source so to speak (I don't want to have all those duplicates in the first place), but this is an interesting issue in itself - I can't find a way to add a DISTINCT filter on a field other than the Node ID (which has it's own option in the View's Basic Settings box).

Upvotes: 1

Views: 3288

Answers (4)

Mike Volmar
Mike Volmar

Reputation: 2093

We found this issue in drupal 6.x view - had 7 of 150 items duplicated one or twice. No idea why. Issue only appeared for anonymous users. Luckily, views 6.x.2.16 provides a 'distinct' setting under the basic settings, I set it to Yes and got rid of the duplicates.

Upvotes: 0

Suhani Jain
Suhani Jain

Reputation: 11

There are two option to solve this:\

  • apply this patch
    OR

  • hook_views_query_alter => just paste

    $query->distinct = 1;
    $query->no_distinct = 'views_groupby';

Upvotes: 1

jackocnr
jackocnr

Reputation: 17416

I found a great article on a good way to alter the SQL queries that are generated from views before they get executed: http://echodittolabs.org/blog/2010/06/group-views. I used this to basically suffix a GROUP BY clause to the end of the query (in a really nice, clean and versatile way).

As an aside, I also found a way to tackle the issue of importing lots of duplicate feed items, the details of which are here: http://drupal.org/node/661314#comment-3667228. It adopts quite an extreme approach (deleting all items before each update), but this is the only solution for some nasty malformed feeds.

I was holding out for some undiscovered feature of Views that let you do this, but I don't think there is one - maybe in the next version ;)

Upvotes: 2

Vinicius Braz Pinto
Vinicius Braz Pinto

Reputation: 8289

I guess you have two options: either put some logic in the view template file to skip the duplicate items or implement hook_views_query_alter() to change the query used by the view, adding the DISTINCT clause.

Upvotes: 0

Related Questions