【问题标题】:Drupal views sorting with two criteriaDrupal 视图按两个标准排序
【发布时间】:2012-11-25 20:02:27
【问题描述】:

我想更改我的视图查询以更改我的查询视图。

所以我想添加如下查询:

<select From (select from where) order by) order by >

只订购我的数据两次。

即使不使用hook_view_query_alter,还有其他方法可以做我想做的事吗?

我尝试了很多方法和模块(views_php、views_raw_sql、view_field_View)和 也尝试过存储过程,但不知道如何在 Drupal 视图中调用它

有什么想法或提示吗?

【问题讨论】:

  • 您应该为您的问题添加更多上下文。您的问题是无法让正确的查询正常工作还是 Drupal 问题?
  • 对此感到抱歉。我的第一个问题是我试图对我的视图进行排序,因为 2 个日期(首先是发布日期)然后是我的一个字段(开始日期),所以我得到了排序的数据desc 按发布日期然后使用开始日期字段再次按 asc 排序。所以我尝试将查询更改为嵌套选择语句。如果你能告诉我如何以这种方式或任何其他方式来做同样的事情,这对你很好。感谢您的友好回复。
  • 您能发布您的查询目前的样子吗?您使用的是什么 DBMS?如果您在 MySQL 中使用子查询,则语法为 SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
  • SELECT * FROM (SELECT t1.column1 , t2.column2 t1.column3, t1.column4,t1.column6 FROM t1, t2s WHERE ((t1.status = '1') AND (t1.键入 IN ('events')) AND t2.column3 = 'events' AND column1 .id = column2.nid) ORDER BY t1.column1 DESC LIMIT 3) AS t ORDER BY t2.column2 ASC
  • 我不知道如何更改视图查询以使用我的查询更改视图查询。再次感谢

标签: mysql drupal-7 subquery drupal-views


【解决方案1】:

您不需要嵌套的SELECT 子句来向查询添加另一个排序条件。以下语法将满足您的需求:

SELECT ...
FROM ...
ORDER BY date1, date2

这将按 date1 然后按 date2 对结果进行排序。

在视图中,只需将另一个排序条件添加到您正在编辑的视图中,就这么简单。

【讨论】:

  • 感谢您的回复,我已经添加了第二个排序条件,但这会导致基于 date1 的第一级排序,如果存在具有相同 date1 的两个事件,则这两条记录只会执行第二级排序这是基于 date2 字段。这不是我想要做的。我想排序到日期 1,所有数据都排序到 date1(这是发布日期/降序),然后从排序的数据中选择事件date2(事件开始日期)升序。
  • 好的,我想我现在得到了你想要的。嵌套 select 中的LIMIT 子句表示需要获取最近的 3 个事件(按 date1),然后按 date2 排序。对吗?
  • 是的,如果有任何其他方式(drupal 方式),即使不使用 hook_view_query_alter 我也会很感激。我的项目取决于那种类型,我仍然是初级。再次感谢。
  • 如果您可以重写查询,使子查询位于 WHERE 语句中,事情可能会容易一些。然后,您可以在 hook_views_query_alter() 中执行 $query->add_where() 以添加利用子查询的额外 WHERE 条件。
猜你喜欢
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多