COUNT并从多个表中选择

COUNT并从多个表中选择

考虑数据库(例如,组成):

Table 'owner'
id     name
1      john
2      andrew
3      peter

Table 'duck'
id     name     ownerID
1      duck1    1
2      duck2    1
3      duck3    1
4      duck4    2
5      duck5    2
6      duck6    3
7      duck7    3
8      duck8    1
9      duck9    3
10     duck10   3
11     duck11   1
12     duck12   2

Table 'food'
id     name     type     duckID
1      beef     meat     4
2      grass    veg      8
3      lemon    fruit    5
4      apple    fruit    3
5      pizza    snack    7


我希望编写一些SQL,该SQL对于每个所有者,计算吃某种食物的鸭子的数量。例如,对于所有者John,将有2只鸭子(鸭子3和8)。

到目前为止,我正在编写以下代码:

select owner.name, count(duck.ownerID)
from duck, food, owner
where duck.id == food.duckID
and duck.ownerID == owner.id;


我得到结果:

Peter | 5


任何建议表示赞赏。

最佳答案

这是通过group by子句完成的:

select owner.name, food.name, count(duck.id)
from duck, food, owner
where duck.id == food.duckID
and duck.ownerID == owner.id
group by owner.name, food.name;


该查询为所有者名称和食物名称的每种组合以及拥有该食物的所有者鸭只的数量提供一行。

关于mysql - SQLite COUNT并从多个表中选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20030310/

10-10 12:39