2015-02-10 135 views
-1

我有兩個表ShoppingLists和GroceryItems。 GroceryItems表包含ShoppingListId,它作爲ShoppingLists表的外鍵。我試圖獲得每個ShoppingList中包含的所有ShoppingLists和一個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

+2

爲什麼你就不能更換'JOIN'用'LEFT JOIN'? – dan08 2015-02-10 21:38:46

+0

不要將問題改爲不同的東西。 – 2015-02-10 21:46:18

+0

謝謝!當我用LEFT JOIN更改JOIN時,我只能看到沒有任何雜貨的記錄。我想要顯示購物清單,還有沒有雜貨項目的購物清單。 – 2015-02-10 21:46:35

回答

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

+0

非常感謝! – 2015-02-10 21:53:24