2016-09-30 45 views
0

我有一些表查詢列表學生,在等級只是b

表:mhsw
淨息差;名稱; prodi
1001;威利; SIF
1002;卡雷爾; SIF
1003; fikri; TIF
1004; wawan; DPI

表:krs
mkid; mkname;年級;最終
1001; MK1;一個; Y
1001; MK2; B; Y
1001; MK3; B; Y
1002; MK2; C; Y
1002; MK3; B; Y
1002; MK1; d; Y
1003; MK1;一個; Y
1003; MK2; B; Y
1003; MK3;一個; Y
1004; MK1;一個; Y
1004; MK2; d; Y
1005; MK3;一個; Y

我想要我的結果
nim;名稱; prodi
1001;威利; SIF
1003; fikri; TIF

條件爲打印mhsw列表,其中上KRS表中的所有MKID是所有級A,B,C和最終是Y和不

我需要的MySQL查詢時顯示等級是d或E 感謝

回答

0

一個可選的方法是使用在krs表條件的聚集,以確定哪些學生只有AB,或C所有Y的最後一起的成績。

SELECT t1.nim, 
     t1.name, 
     t1.prodi 
FROM mhsw t1 
INNER JOIN 
(
    SELECT mkid 
    FROM krs 
    GROUP BY mkid 
    HAVING SUM(CASE WHEN grade NOT IN ('A', 'B', 'C') THEN 1 END) = 0 AND -- only A,B,C 
      SUM(CASE WHEN final = 'Y' THEN 1 END) = COUNT(*) -- all final is Y 
) t2 
    ON t1.nim = t2.mkid 
0
SELECT mhsw.*,tbl.* 
FROM mhsw 
INNER JOIN 
    (SELECT mkid 
    FROM krs 
    Where grade IN ('A', 'B', 'C') 
    AND final = 'Y') tbl ON mhsw.nim = tbl.mkid 

如果mhsw.nim = tbl.mkid具有多個行,這將顯示爲:

尼姆;名稱;普羅迪; MKID; mkname;年級;最後;
1001;威利; SIF; 1001; MK1;一個; Ÿ;
1001;威利; SIF; 1001; MK2; B; Ÿ;
1001;威利; SIF; 1001; MK3; B; Ÿ;

..
....
1004; wawan; DPI; 1004; MK1;一個; Ÿ;

+0

我只想要訂單或由mhsw.name組成的分級是A,B,C的時候不是該等級不顯示 –

相關問題