Drupal 6 & Views 2 - DISTINCT 字段
Posted
技术标签:
【中文标题】Drupal 6 & Views 2 - DISTINCT 字段【英文标题】:Drupal 6 & Views 2 - DISTINCT field 【发布时间】:2010-11-04 11:20:44 【问题描述】:我正在使用 Feeds 模块导入大量 Feed Item 节点。由于格式错误的提要文件,我得到了很多重复。我正在使用视图来显示这些节点,并且需要能够在“节点:发布日期”字段上添加 DISTINCT 过滤器,因此每个发布日期我只能得到 1 个结果。
我也将研究从源头上解决问题(我不想一开始就拥有所有这些重复项),但这本身就是一个有趣的问题 - 我找不到方法在节点 ID 以外的字段上添加 DISTINCT 过滤器(在视图的基本设置框中有它自己的选项)。
【问题讨论】:
【参考方案1】:我发现了一篇很棒的文章,介绍了在视图执行之前更改从视图生成的 SQL 查询的好方法:http://echodittolabs.org/blog/2010/06/group-views。我用它基本上在查询末尾添加了一个 GROUP BY 子句(以一种非常好的、干净和通用的方式)。
顺便说一句,我还找到了一种方法来解决导入大量重复提要项目的问题,详细信息在这里:http://drupal.org/node/661314#comment-3667228。它采用了相当极端的方法(在每次更新之前删除所有项目),但对于一些讨厌的格式错误的提要,这是唯一的解决方案。
我一直坚持要让你做到这一点的 Views 的一些未被发现的功能,但我认为没有 - 可能在下一个版本中;)
【讨论】:
【参考方案2】:有两种方法可以解决这个问题:\
申请this patch或
hook_views_query_alter => 粘贴
$query->distinct = 1;
$query->no_distinct = 'views_groupby';
【讨论】:
【参考方案3】:我猜你有两个选择:要么在视图模板文件中添加一些逻辑以跳过重复项,要么实现 hook_views_query_alter()
以更改视图使用的查询,添加 DISTINCT
子句。
【讨论】:
感谢您的回复。我已经找到了使用 views_views_pre_execute() 的解决方法,请参阅 echodittolabs.org/blog/2010/06/group-views。使用 Views UI 无法做到这一点似乎很奇怪......【参考方案4】:我们在 drupal 6.x 视图中发现了这个问题 - 150 个项目中有 7 个重复了一两次。不知道为什么。问题仅针对匿名用户出现。幸运的是,views 6.x.2.16 在基本设置下提供了一个 'distinct' 设置,我将其设置为 Yes 并去掉了重复项。
【讨论】:
以上是关于Drupal 6 & Views 2 - DISTINCT 字段的主要内容,如果未能解决你的问题,请参考以下文章
Drupal 6.x中的hooku viewsu postu render