如何加入两个 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
所以我有三个 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