【问题标题】:Get relationship 2 tables deep in MySQL在 MySQL 中获取关系 2 表
【发布时间】:2023-02-13 05:46:00
【问题描述】:

我有下表:

  • 项目(编号)
  • 项目(project_id)
  • cmets (item_id)

我想要:

  1. 计算项目中的所有项目
  2. 计算项目中的所有 cmet。

    对于 #1,我正在执行以下操作:

    SELECT 
        p.*,
        (SELECT COUNT(*) FROM items WHERE project_id=p.id) items_count,
    FROM projects p
    

    我怎样才能更深入地计算cmets?

【问题讨论】:

  • 请共享所有表的架构。
  • 请注意,我们更喜欢这里的技术写作风格。我们温和地劝阻问候,希望你能帮助,谢谢,预先感谢,感谢,问候,亲切的问候,签名,请你能帮忙,闲聊材料和缩写 txtspk,恳求,你有多久了被卡住了,投票建议,元评论等。只需解释你的问题,并展示你已经尝试过的,你期望的,以及实际发生的事情。

标签: mysql join group-by count left-join


【解决方案1】:

假设 idprojects 的主键,并且 itemscomments 都有主键,例如 id,您可以将 projects 加入其他表并聚合:

SELECT p.*,
       COUNT(DISTINCT i.id) items_count,
       COUNT(c.id) comments_count
FROM projects p
LEFT JOIN items i ON i.project_id = p.id
LEFT JOIN comments c ON c.item_id = i.id
GROUP BY p.id;

请参阅简化的demo

【讨论】:

  • 这非常有效。我完全明白了谢谢你的解释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 2014-07-13
  • 2018-10-30
  • 1970-01-01
相关资源
最近更新 更多