2012-02-11 63 views
0

我正在開發一個數據庫,我有一個表(可以說材料)。我有第二張桌子讓我保存我買的材料讓我們說purchase_elements。例如啓用所有條目的SQL查詢

材質ID:MAT1>量:3

材質ID:MAT2>數量:4

材質ID:Mat5>數量:2

材質ID: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; 

That sho 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

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,因爲INNER JOIN限行只有你已購買並過濾不屬於purchase_elements表的零件材料的材料。您將需要修改您的查詢,如下所示:

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

您在哪裏使用了「左外連接」? – user973493 2012-02-11 18:17:20

+0

當您想要顯示「左側」表中的所有記錄時,在連接兩個表時使用'LEFT OUTER JOIN',無論「右側」表是否具有關聯的記錄。所以我在加入'材料'和'purchase_elements'時使用了它。 – 2012-02-11 18:26:06

+0

感謝您糾正我的陳述#Perception! – 2012-02-11 18:28:41