【问题标题】:Join statement for MySQLMySQL 的 Join 语句
【发布时间】:2010-11-10 03:46:53
【问题描述】:

我有一个包含以下表格的 MySQL 数据库:

Table: Professor
Attributes: ID, ProfessorName

Table: Class
Attributes: ID, ClassName, SubjectID (secondary)

Table: Subject
Attributes: ID, SubjectName

Table: DocCategory
Attributes: ID, DocCategoryName

Table: Document
Attributes: ID, DocName, ProfessorID (secondary), ClassID (secondary), DocCategoryID (secondary)

有人可以通过查询为我指明正确的方向,以便我获得包含以下内容的报告:

所有 ProfessorName 的列表,第二列包含文档表中与该教授相关的文档计数?

提前致谢!

【问题讨论】:

    标签: sql mysql select join


    【解决方案1】:

    用途:

      SELECT p.professorname,
             COUNT(*) AS numDocuments
        FROM PROFESSOR p
        JOIN DOCUMENT d ON d.professorid = p.id
    GROUP BY p.professorname
    

    要查看所有教授的列表——没有文件的教授将列出零值——使用:

       SELECT p.professorname,
              COALESCE(COUNT(d.id), 0) AS numDocuments
         FROM PROFESSOR p
    LEFT JOIN DOCUMENT d ON d.professorid = p.id
     GROUP BY p.professorname
    

    【讨论】:

    • 太完美了!有一件事,它只显示带有文件的教授姓名,我可以添加一个语句来在没有关系的那些旁边显示“0”吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    相关资源
    最近更新 更多