跨一对多关系选择 COUNT
Posted
技术标签:
【中文标题】跨一对多关系选择 COUNT【英文标题】:SELECT COUNT across one-to-many relationship 【发布时间】:2013-03-08 13:00:19 【问题描述】:两张桌子
玩家
和
团队
对于 1-∞ 关系(球员与球队):你如何计算每个球队有多少球员?
尝试失败:
SELECT team.teamid, (SELECT COUNT(player.team) FROM player)
FROM team
LEFT JOIN player ON player.team = team.teamid
【问题讨论】:
请通过添加适当的标签(Oracle、SQL Server、mysql 等)指定您的目标关系数据库管理系统。可能有一些答案利用了不受普遍支持的语言或产品功能。此外,通过使用特定的 RDBMS 对其进行标记,您的问题可能会受到更适合回答的人的关注 哦,当然。它的 MySQL:假设 SQL 在这种情况下非常通用,不会有任何影响 这可能是简单的 sql,但您应该始终指定您正在使用的 rdbms。 :) 【参考方案1】:它对我有用
SELECT *, (select count(*) from receipt_note_stock b where
b.receipt_note_id = a.id) from receipt_notes a
【讨论】:
【参考方案2】:试试
SELECT t.teamid, COUNT(p.team) player_count
FROM team t LEFT JOIN
player p ON p.team = t.teamid
GROUP BY t.teamid
SQLFiddle
如果某些球队没有分配球员,它将给出正确的结果事件。请参阅 sqlfiddle(第 3 队没有球员)。
【讨论】:
你可以使用 WHERE not JOIN 获得相同的结果吗? @f1ames 这是什么原因? 好奇心,我更喜欢使用 WHERE 而不是 JOIN。另外,我有某种复杂的查询连接 3 个表,修改它比使用连接创建全新的查询更容易:)以上是关于跨一对多关系选择 COUNT的主要内容,如果未能解决你的问题,请参考以下文章
Realm Swift 选择与一对多关系实体中的一个字段匹配的所有值