如果行不存在,如何将表中的计数返回为0?

时间:2013-11-21 00:48:59

标签: mysql sql database

我有两张桌子。

果:

   id  ||  name
 -----------------
    1  ||  oranges 
    2  ||  apples

和篮子:

 basket  ||  fruit references a.id
 ---------------------------------
    x    ||   1
    x    ||   1
    y    ||   1
    y    ||   2

我需要选择使用count(baskets.fruit)的水果数量,其中篮子是x。我感到困惑的部分是:如果一个篮子不包含水果的条目,它需要返回0。

例如,如果我们需要篮子x的数量,我们会得到:

fruit.name  ||  count
-------------------
  apples    ||  2
  oranges   ||  0

请注意,尽管篮子中的x不存在橙色,但仍会将条目返回为0。

2 个答案:

答案 0 :(得分:1)

在表格之间设置outer join,然后进行相应的分组:

SELECT   fruit.name, COUNT(baskets.fruit)
FROM     fruit LEFT JOIN baskets ON baskets.fruit = fruit.id
WHERE    baskets.basket = 'x'
GROUP BY fruit.id

答案 1 :(得分:0)

我们有2个表,(部分)和(需要) 大学课程的一部分...每门课程有2或3个部分,学生可以通过注册部分参加课程...学生注册的每个部分ID将插入到表格中,每个部分都没有注册不能写在take表中,只能存在于section表中。

我解决的问题是:

找到每个部分的注册,但也包括没有学生参加的部分;此类部分的注册应视为0。

我的疑问:

select distinct(section.sec_id),COUNT(section.sec_id) as enrollment
from takes,section
where section.sec_id = takes.sec_id
group by section.sec_id
union
(select sec_id , 0 
from section
where not exists ( select sec_id
from takes
where section.sec_id = takes.sec_id))

我希望这对你有用。