2017-04-02 61 views
0

我有問題與mysql 我需要從一些連接的表中選擇總和,但我沒有得到我需要的結果。 這是我的查詢。從mysql中的幾個子查詢中選擇數據

SELECT kelas.kelas as kelas, perpus.perpus as perpus 
    FROM 
    (SELECT b.id_alt, SUM(a.nilai_crips) AS kelas FROM crips AS a JOIN list AS b ON a.id_crips=b.id_crips where a.id_kriteria=34 group by b.id_alt 
    )as Kelas, 
    (SELECT SUM(a.nilai_crips) AS perpus FROM crips AS a JOIN list AS b ON a.id_crips=b.id_crips where a.id_kriteria=35 group by b.id_alt 
    )as perpus 
    group by kelas.id_alt 

第1列顯示正確的結果,但第2列沒有。

kelas | perpus 
100 | 100 
100 | 100 
100 | 100 
100 | 100 
10 | 100 
100 | 100 
80 | 100 
100 | 100 

如果我刪除了第一個子查詢,該列將返回正確的結果。

perpus 
100 
100 
100 
100 
100 
100 
100 
76 

我的查詢出了什麼問題?預先感謝您的幫助。

+2

你正在做的兩個子查詢結果之間的交叉連接。 – GurV

回答

2

使用一個單一的SELECT,並有條件地添加值:

SELECT 
    b.id_alt, 
    SUM(IF(a.id_kriteria = 34,a.nilai_crips,0)) AS kelas, 
    SUM(IF(a.id_kriteria = 35,a.nilai_crips,0)) AS perpus 
FROM crips AS a 
JOIN list AS b 
ON a.id_crips = b.id_crips 
WHERE a.id_kriteria IN (34,35) 
GROUP BY b.id_alt; 
+0

它的工作原理..非常感謝你<3 –

+0

如果是這樣,請將答案標記爲已接受。謝謝! –