我正在 symfony2 中的一个简单论坛上工作,并使用以下 DQL 查询来获取每个论坛中的最后一篇文章:
SELECT p, f.id FROM MyBundle:Post p
JOIN p.forum f
GROUP BY p.forum
HAVING p.created_at >= MAX(p.created_at)
如果没有 HAVING 子句,它可以工作并获取第一个帖子,但这不是我想要的。
我在这里做错了什么?这甚至可以使用 DQL 吗?
我正在 symfony2 中的一个简单论坛上工作,并使用以下 DQL 查询来获取每个论坛中的最后一篇文章:
SELECT p, f.id FROM MyBundle:Post p
JOIN p.forum f
GROUP BY p.forum
HAVING p.created_at >= MAX(p.created_at)
如果没有 HAVING 子句,它可以工作并获取第一个帖子,但这不是我想要的。
我在这里做错了什么?这甚至可以使用 DQL 吗?
当然这是我的错,而不是 DQL。:) 更新后的查询有点复杂,需要一个子查询。如果有人有更好的方法来做到这一点,请告诉我。
SELECT post, f.id as forum_id FROM MyBundle:Post post
JOIN post.forum f
WHERE post.id in (
SELECT MAX(p.id) FROM MyBundle:Post p
GROUP BY p.forum
)
这篇博文补完了我淡化的sql知识。