如何加入两个 table 并按第三个 table 排序?

How to join two tables and order by a third table?

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

此语句正确工作并且 returns 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

然而,当我尝试 select 并按第三个 table 中的字段对其进行排序时,出于某种原因,结果与预期不符。我环顾四周并尝试了多次,但 none 似乎对我有用,从来没有加入超过 2 个 table 并同时订购。

所以...我尝试用第三个 table:

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

感谢任何帮助,如果需要,可以post根据要求提供更多详细信息。

当使用 count:

等聚合时,您选择的要在结果中唯一的字段应包含在 group by 子句中
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