2012-02-11 4 views
0

私はデータベースを開発しており、テーブルを持っています(マテリアルと言うことができます)。私は2番目のテーブルを持っているので、購入した材料を保存して、purchase_elementsと言うことができます。例えばすべてのエントリを有効にするSQLクエリ

MatID:MAT1>数量:3

MatID:MAT2>数量:4

MatID:MAT5>数量:2

MatID:MAT1>数量:5

クエリで購入した資料を見たいときは

SELECT materials.id, 
     materials.name, 
     Sum(purchase_elements.quantity) AS QUANTITY 
FROM materials 
    INNER JOIN purchase_elements 
ON materials.id= purchase_elements.id 
GROUP BY materials.id, 
      materials.name; 

これはWS

Id/name/QUANTITY 
1 Mat1 8 
2 Mat2 4 
5 Mat5 2 

クエリは、私が持っている材料は購入をするが、それらのすべて

Id/name/QUANTITY 
1 Mat1 8 
2 Mat2 4 
3 Mat3 
4 Mat4 
3 Mat5 2 

答えて

0

left joinを使用していないだけで私を見る方法はあります。 INNERは、あなたが購入しpurchase_elementsテーブルの一部ではない材料をフィルタリングしている唯一の材料に制限の行を結合するので

SELECT materials.id, 
    materials.name, 
    Sum(purchase_elements.quantity) AS QUANTITY 
FROM materials 
LEFT JOIN purchase_elements 
ON materials.id= purchase_elements.[Υλικά IID] 
GROUP BY materials.id, 
     materials.name; 
1

あなたは、LEFT OUTER JOINを行う必要があります。次のようにクエリを変更する必要があります。

SELECT M.id, M.name, SUM(PE.quantity) AS QUANTITY 
FROM materials AS M 
    LEFT OUTER JOIN purchase_elements AS PE ON M.id= PE.MatID 
GROUP BY M.id, M.name; 
+1

"LEFT OUTER JOIN"はどこで使用しましたか? – user973493

+0

'right-side'テーブルにレコードが関連付けられているかどうかにかかわらず、' left-side'テーブルのすべてのレコードを表示するには、2つのテーブルを結合するときに 'LEFT OUTER JOIN'を使用します。だから私は 'materials'と' purchase_elements'を結合するときに使いました。 –

+0

私の声明を訂正してくれてありがとう、#Perception! –

関連する問題