2013-11-17 4 views
0

Рассмотрим базу данных (составленную, например):SQLite 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, что для каждого владельца, сосчитать количество уток, которые питаются некоторые виды пищи. Например, для владельца Джона было бы 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 

Любые предложения приветствуются.

ответ

1

Это делается с 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; 

Этот запрос дает одну строку для каждой комбинации имени владельца и названия продуктов питания с количеством уток владельца едят эту пищу.

+0

благословения для обмена вашей мудростью –

Смежные вопросы