如何在两个表之间执行左外连接?

时间:2015-02-10 21:27:35

标签: sql sqlite

我有两个表ShoppingLists和GroceryItems。 GroceryItems表包含ShoppingListId,后者用作ShoppingLists表的外键。我试图获取所有ShoppingLists和每个ShoppingList中包含的GroceryItems数,但我也想要返回没有杂货商品的ShoppingLists。

select s.Title, s.ShoppingListId, count(g.GroceryItemId) AS 'NoOfGroceryItems' FROM ShoppingLists s
JOIN GroceryItems g ON s.ShoppingListId = g.ShoppingListId 

如何更改上述查询以返回预期结果?

如果我将JOIN更改为LEFT JOIN,则它仅返回购物清单中没有任何杂货商品的记录。

以下屏幕截图中的示例数据:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试使用左外连接

 select s.Title, s.ShoppingListId, count(g.GroceryItemId) AS 'NoOfGroceryItems'        
FROM ShoppingLists s
        left outer join JOIN GroceryItems g ON s.ShoppingListId = g.ShoppingListId
         group by s.Title, s.ShoppingListId

如果没有杂货商品,您可能希望将零值替换为零

如果您需要使用连接

,可视化此图片

enter image description here