2016-11-15 122 views
0

enter image description heremysql select语句多表

这只是一个测试项目。我想知道如何选择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

回答

0

尝试使用SELECT与UNION

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

貌似可以从profsubject表中获取的教授ID和使用subjid的加入JOINstudentenrolled表。以类似的方式,您可以获得等级低于某个合格/不合格阈值(本例中为65)的学生人数。

然后要获得一个简短列表,您可以从这个派生表中选择不同的利润。

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;