【问题标题】:Display categories and their counts显示类别及其计数
【发布时间】:2011-08-13 04:34:14
【问题描述】:

我的数据库中有两个表(工作和类别),我需要一个 SQL 帮助来选择类别并计算每个类别中的工作数量。如果有帮助,我正在使用 MySQL。

到目前为止

SELECT * from categories c left join jobs j on (c.job_id = j.job_id);

谢谢

【问题讨论】:

  • 我的意思是你的数据库结构 - 表格是什么样的以及它们有哪些列。

标签: mysql sql


【解决方案1】:

假设你的表结构是这样的:

类别
身份证、姓名

工作
ID、CategoryID、名称

SELECT Category.Name, COUNT(Job.ID)
FROM Job
    INNER JOIN Category ON Job.CategoryID = Category.ID

【讨论】:

  • imho LEFT join 在这里更合适(您还必须显示具有 0 个工作的类别)
  • 我不明白:你是说如果我使用 LEFT 会很好,以防我想显示 0 个工作或什么?请问 INNER 有什么不同? @BorisBucha
  • INNER JOIN 将仅包含连接表中匹配的记录,而LEFT OUTER JOIN 将为不匹配的记录返回空值。感谢@Jeff Atwood,有一篇很棒的博客文章,其中包含关于连接的维恩图。 codinghorror.com/blog/2007/10/…
  • @Dustin 太好了,现在知道了。你真棒
  • @Don aMOEBa:是的,鲍里斯就是这个意思。如果您想考虑所有类别,包括其中没有工作的类别,您需要像这样使用 LEFT JOIN:... FROM categories LEFT JOIN jobs ON ...(即左连接左侧的categories)。
【解决方案2】:

假设您有一个 CategoryName 列...

选择 c.CategoryName, 数数(*) 从类别 c 在 j.job_id = c.jobID 上加入工作 j 按 c.CategoryName 分组

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    相关资源
    最近更新 更多