我正在使用mysql和doctrine2。
我有两张这样的桌子
User.php用户
ID name
1 | John
2 | Jonas
3 | Nick
类.php
ID attenduser
1 | 3
2 | 3
3 | 1
4 | 1
5 | 3
6 | 2
类attenduser受User.ID的约束
意思是尼克上了三次课。
约翰两次,乔纳斯一次。
现在我通过这个原则sql得到用户列表
SELECT p FROM UserBundle:User p
不过,我想按他上课的次数排序用户列表。
我该怎么改?
根据@Palec答案
我做了这句话并试着说。
SELECT u,COUNT(l.id)
FROM UserBundle:User u
INNER JOIN UserBundle:Class c
with c.attenduser = u.id group BY u.id
ORDER by COUNT(l.id) DESC
但上面说
QueryException: [Syntax Error] line 0, col 223: Error: Expected end of string, got '('
我觉得伯爵有点不对劲。。。。
我需要教条信息。请帮帮我。
最佳答案
您需要进行子选择,如下所示:
SELECT user.name, COUNT(class.id) AS count
FROM UserBundle:User
AS user
JOIN UserBundle:Class
AS class
ON class.attenduser = user.id
GROUP BY user.id
ORDER BY count DESC
我还没有机会测试,所以如果失败了就告诉我。