2012-02-11 62 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