【问题标题】:SELECT COUNT across one-to-many relationship跨一对多关系选择 COUNT
【发布时间】: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。 :)

标签: mysql sql select count relational-database


【解决方案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 个表,修改它比使用连接创建全新的查询更容易:)
    猜你喜欢
    • 2017-09-26
    • 2020-12-15
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    相关资源
    最近更新 更多