我正在使用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

我还没有机会测试,所以如果失败了就告诉我。

10-01 16:54
查看更多