我正在使用Feeds模块导入大量Feed Item节点。由于格式错误的Feed文件,我得到了很多重复项。我正在使用View来显示这些节点,并且需要能够在“Node:Post Date”字段中添加DISTINCT过滤器,因此每个发布日期我只得到1个结果。
我也会考虑在源头解决这个问题(我不想首先考虑所有这些重复项),但这本身就是一个有趣的问题 - 我找不到办法在节点ID以外的字段上添加DISTINCT过滤器(在View的基本设置框中有自己的选项)。
答案 0 :(得分:2)
我找到了一篇很棒的文章,介绍了在视图执行之前更改从视图生成的SQL查询的好方法:http://echodittolabs.org/blog/2010/06/group-views。我使用它基本上将GROUP BY子句后缀添加到查询的末尾(以非常好,干净和通用的方式)。
另外,我还找到了解决导入大量重复Feed项的问题的方法,其详细信息如下:http://drupal.org/node/661314#comment-3667228。它采用了相当极端的方法(在每次更新之前删除所有项目),但这是一些令人讨厌的格式错误的提要的唯一解决方案。
我正在坚持使用一些未被发现的视图功能,让你这样做,但我不认为有一个 - 可能在下一个版本中;)
答案 1 :(得分:1)
有两种方法可以解决这个问题:\
hook_views_query_alter =>只需粘贴
$query->distinct = 1;
$query->no_distinct = 'views_groupby';
答案 2 :(得分:0)
我猜你有两个选择:要么在视图模板文件中放置一些逻辑来跳过重复的项目,要么实现hook_views_query_alter()
来更改视图使用的查询,添加DISTINCT
子句。 / p>
答案 3 :(得分:0)
我们在drupal 6.x视图中发现了这个问题 - 150个项目中有7个重复了一次或两次。不知道为什么。问题仅出现在匿名用户身上。幸运的是,6.x.2.16视图在基本设置下提供了“独特”设置,我将其设置为是并删除了重复项。