【发布时间】:2012-08-07 23:24:04
【问题描述】:
您好,我有来自 previous question 的以下查询,需要将其转换为 Doctrine 1.2 的 DQL。然而事实证明,DQL 不支持连接中的子查询。
SELECT * FROM contact c
LEFT JOIN
(SELECT a1.contact_id, a1.date, a1.activity_type_id FROM activity a1
JOIN (SELECT contact_id, MAX(DATE) DATE FROM activity GROUP BY contact_id) a2
ON a1.contact_id = a2.contact_id AND a1.date = a2.date
) a
ON c.id = a.contact_id
WHERE a.activity_type_id = 2;
我正在尝试找出如何在不求助于多个查询的情况下以另一种方式做到这一点。
谢谢。
【问题讨论】:
-
是否允许使用视图而不是子查询?
-
我从未使用过一种观点,但学说似乎支持它们。
-
我已经阅读了关于学说中的观点,但它不会为我解决这个问题。我将不得不尝试将其重写为 DQL 查询,但我不知道是否可以这样做它。
-
那么,您能否例如创建一个视图
CREATE VIEW max_activity_date AS SELECT contact_id, MAX(date) AS max_date FROM activity GROUP BY contact_id并加入其中? -
我设法重写了它。视图不起作用,但能够以不同的方式进行。谢谢。