mysql select语句为多个表

时间:2016-11-15 11:30:52

标签: mysql

enter image description here

这只是一个测试项目。我想知道如何选择一个主题中超过5名失败学生的所有教授

我已经知道如何使用以下查询选择至少有2个科目的所有教授

SELECT    paulin_professors.*,
          IFNULL(sub_p.total, 0) num
FROM      paulin_professors
LEFT JOIN ( SELECT   COUNT(*) total, pau_profid
            FROM     paulin_profsubject
            GROUP BY pau_profid
          ) sub_p ON (sub_p.pau_profid = paulin_professors.pau_profid)
    WHERE sub_p.total >= 2;

我知道我已经接近但我无法上班(所有教授都有超过5名失败的学生在一门课程中)。有任何想法吗? TIA

2 个答案:

答案 0 :(得分:0)

尝试使用SELECT with UNION

select [columnName1],[columnName2] from [Table1] where [condition] union select [columnName1],[columnName2] from [Table1] where [condition] union ....

答案 1 :(得分:0)

看起来可以使用profsubjectJOIN表和studentenrolled subjid表中获取教授ID。以与您所拥有的相似的方式,您可以获得等级低于特定通过/未通过阈值的学生的数量(在这种情况下为65)。

然后,要获得一个简短列表,您可以从此衍生表中选择不同的profids。

SELECT
    distinct pau_profid
FROM
    (SELECT    
        t1.pau_profid,
        IFNULL(t2.total_failed, 0) number_failed >= 5
    FROM      
        paulin_profsubject t1
    LEFT JOIN 
        (SELECT   
            COUNT(*) total_failed, 
            pau_subjid
        FROM     
            paulin_studentenrolled
        WHERE
            pau_grade < 65
        GROUP BY 
            pau_subjid
        ) t2
    ON 
        t1.pau_subjid = t2.pau_subjid
    WHERE 
        number_failed >= 5
    ) t3;