SQL:获取另一个表的w.r.t行的行数

时间:2014-03-30 19:55:31

标签: sql

我想从属于某个类别的表中获取行数(在另一个表中定义)。有点像以下。

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

我需要使用表2中的特定类别计算表1中的每个名称并返回结果。 这似乎有一个相当简单的解决方案,但我无法理解它的工作。请帮忙!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

简单。在Table2上使用表1中的左连接,然后在类别上使用计数功能,并在类别上执行分组

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