2014-03-30 44 views
0

我想從屬於某個類別的表(在另一個表中定義)中獲取行的數量。有點像以下。SQL:獲取另一個表的行w.r.t的行數

----------------------------------------- 
id | name   | category 
    |    | 
1 | Name 1  | toddler 
2 | Name 2  | toddler 
3 | Name 3  | newborn 
4 | Name 4  | toddler 
5 | Name 5  | adult 

而且我所有的類別定義

----------------------------------------- 
id | category 
    | 
1 | toddler 
2 | newborn 
3 | adult 
4 | elderly 

現在我需要一個SQL查詢的,可以給我一個返回的結果是這樣的

----------------------------------------- 
category | count 
      | 
toddler | 3 
newborn | 1 
adult  | 1 
elderly | 0 
第一個表另一個表

我需要計算表1中的每個名稱與表2中的特定類別並返回結果。 這似乎有一個相當簡單的解決方案,但我無法讓我的想法去處理它。請幫忙!

回答

4

這是一個帶有LEFT JOINCOUNT的簡單查詢。

select c.category, COUNT(n.category) as count 
from Table2 c 
left join Table1 n on c.category = n.category 
group by c.category 

SQL Fiddle demo

+0

謝謝。但是我得到1的結果應該是零的行數。休息很好。 –

+0

喜歡,「老人」的計數應爲0,但我得到1. –

+0

@AliHaideri我添加了SQL小提琴,以顯示它是如何工作的。 – Szymon

0

簡單。在Table2上使用左加入與Table1,然後使用count函數對類別做組by對類別。

select b.category, count(a.category) 
from Table1 as a 
left join Table2 as b 
on a.id = b.id 
group by b.category 
相關問題