2017-04-02 12 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 

第1サブクエリを削除した場合、その列は正しい結果を返します。

perpus 
100 
100 
100 
100 
100 
100 
100 
76 

私のクエリで何が問題になっていますか?事前にお手伝いいただきありがとうございます。

+2

。 – GurV

答えて

2

は、単一のSELECTを使用して、条件付きの値を追加します。あなたは、クロスが2つのサブクエリ結果間の結合を行っている

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

もしそうなら、回答を受け入れたものとしてマークしてください。ありがとう! –

関連する問題