如何连接两个表并按第三个表排序?

时间:2016-02-18 22:06:42

标签: mysql sql-server database join relational-database

所以我有三个表,但是我的SQL JOIN语句由于某种原因不断返回相同的结果,而不是返回所有行并按第三行排序。

此语句正确工作并按预期返回gName和uName:

SELECT rpg.name AS gName, u.username AS uName FROM roleplay_gangs rpg LEFT JOIN users u on u.id = rpg.owner_id

但是当我尝试通过第三个表中的字段选择和排序时,结果由于某种原因不符合预期。我环顾了一会儿,尝试了多次,但似乎没有一个对我有用,从来没有加入超过2个表并同时订购。

所以......我试图用第三张表尝试:

SELECT rpg.name AS gName, u.username AS uName, COUNT(rpgt.gang_id) AS gCount FROM roleplay_gangs rpg LEFT JOIN users u on u.id = rpg.owner_id LEFT JOIN roleplay_gangs_turfs rpgt on rpg.id = rpgt.gang_id ORDER BY gCount

结果:

gName | uName | gCount
-----------------------
test  | hello | 2

预期:

gName | uName | gCount
-----------------------
test  | hello | 2
zmaj  | hello | 0
thir  | ajtea | 0

我们非常感谢您的帮助,如果需要,可以根据要求发布更多详细信息。

1 个答案:

答案 0 :(得分:0)

当您使用group by等聚合时,您要选择的结果中您希望在结果中唯一的字段应包含在count子句中:

SELECT
    rpg.name AS gName, 
    u.username AS uName,
    COUNT(rpgt.gang_id) AS gCount
FROM 
    roleplay_gangs rpg
LEFT JOIN
    users u on u.id = rpg.owner_id
LEFT JOIN
    roleplay_gangs_turfs rpgt on rpg.id = rpgt.gang_id
GROUP BY
    rpg.name, 
    u.username 
ORDER BY gCount