查询是:
我有一个成员表和一个阶段表,“ band_name”是成员表中的外键。
我需要显示阶段名称(stage_name)以及每个阶段将要执行多少成员。
到目前为止,我已经尝试了以下操作:
SELECT stage_name, member_ID,member.band_name
FROM stage, member
WHERE stage.stage_name = member.band_name
ORDER BY stage_name, member.band_name, member_ID;
这会显示一个stage_name和三个成员,但不会显示为数字,例如3,而没有其他stage_names
我认为我可能需要使用COUNT,也可能需要使用INNER join?
仅供参考-我是SQL oracle的新手
感谢所有帮助。
答案 0 :(得分:1)
您需要学习正确,明确,标准,可读的JOIN
语法。逗号是历史。 JOIN
不仅是未来,而且也是现在以及过去的大部分时间。
然后,您要LEFT JOIN
和GROUP BY
:
SELECT stage_name, COUNT(m.member_ID)
FROM stage s LEFT JOIN
member m
ON s.stage_name = m.band_name
GROUP BY s.stage_name
ORDER BY s.stage_name;