【发布时间】:2017-07-08 01:41:59
【问题描述】:
在 mySQL DB 中有一个名为 clients 的表。每个客户行都有一个列client_num。要列出所有客户,我只需使用此语句。
SELECT * FROM clients
现在每个客户端可能有也可能没有一些subclients,它们列在名为subclients 的单独表中,并通过表中的外键client_num 引用。
要找出一个客户端可能有多少个子客户端,我可以像这样在单独的调用中查询子客户端表:假设我们有一个带有 client_num 254 的客户端。
SELECT count(1) FROM subclients WEHRE sublicents.client_num = 254
所以查询返回类似 0, 1, 2, 3 , n
在JOIN 我假设我必须做这样的事情:
SELECT
c.*,
sc.?????
FROM clients AS c
LEFT JOIN subclients AS sc ON sc.client_num = 254
但我不知道如何将 count() 语句合并到 JOIN 中以获取子客户端的数量。另外我不知道LEFT JOIN是否正确。
感谢任何帮助
编辑:
我必须补充一点,我希望从客户端返回 all 行。额外返回的列COUNT(sc.client_num) 携带子客户端的数量。在下面的答案 2 中,我只得到返回的那些具有子客户端的客户端。 do not 具有子客户端的客户端将返回 not。如何解决?
【问题讨论】:
-
Left Join 没问题,因为您不需要检索每个
subclient行,而且并非每个客户端都有子客户端。
标签: mysql