我正在使用drupal 6并且我创建了一个视图并且在视图查询中我想要添加
GROUP BY AND DISTINCT CLAUSE。
为此,我尝试使用 views_groupby 贡献模块,但它只提供 COUNT SQL聚合功能。
我不知道如何使用hook_views_query_alter(&$view, &$query)
在视图查询中添加group by子句和distinct子句。
所以它看起来像这样 -
SELECT DISTINCT(node.nid) AS nid, OTHER_COLUMN
FROM TABLE_NAME
JOIN ANOTHER_TABLE ON JOIN_CONDITION
GROUP BY nid
非常感谢任何帮助或建议。
答案 0 :(得分:1)
在您的查看修改表单的基本设置下,尝试启用不同设置。
您也可以尝试在基本设置下的样式部分使用齿轮图标。如果您的行样式是字段,则可以指定要分组的字段。
答案 1 :(得分:1)
分组依据不支持hook_views_query_alter,它被称为drupal views模块问题。报告位于https://drupal.org/node/590534,http://drupal.org/node/1608742,http://drupal.org/node/389230#comment-2637200
此外,还没有为聚合函数提供所需的结果,因为它会将所有字段和排序顺序字段添加到按条件分组。 因此,您应该使用其他钩子,例如 hook_query_alter 。
function hook_query_alter( &$query) {
if($query->alterMetaData['view']->name == "your_views_name"){
$query->groupBy("domain_source.domain_id");
//also you can unset other group by critera by using, unset($query->getGroupBy());
}
}
答案 2 :(得分:0)
function hook_views_query_alter(&$view, &$query) {
if ($view->name == 'your_view_name') {
$query->add_field('table', 'field', 'alias', array('function', groupby));
$query->add_groupby('table.field');
}
}
答案 3 :(得分:0)
在Drupal 8中,你将添加" Group by"那样:
use Drupal\Core\Database\Query\AlterableInterface;
function MYMODULE_query_alter(AlterableInterface $query) {
if (isset($query->alterMetaData['view'])) {
if($query->alterMetaData['view']->id() == 'replace_by_view_machine_name') {
// Group by UID to remove duplicates from View results
$query->groupBy('users_field_data.uid');
}
}
}