Ищите имя владельца щенка, у которого был щенок, который больше всего обслуживал щенок.

Raymundo Lopez спросил: 28 марта 2018 в 02:42 в: mysql

У меня есть несколько таблиц: Первый: Владелец

Owner_ID    Owner_Name      
   1           Sam  
   2          Andrea
   3          Gabriela

Второй: Service_Done

Puppy_ID   servided_date
1               01/25/2012
2               02/18/2012
3               05/14/2012

Третий:

Puppy's tablePuppy_ID     Owner_ID
1               1
2               2
3                3

У меня есть этот код:

Select owner_name
from puppy p, owner o 
where p.owner_id = o.owner_ID

Отсюда я застрял. Я думал о соединении между таблицами, но я не уверен


2 ответа

Sloan Thrasher ответил: 28 марта 2018 в 03:21

Следующее вернет 5 лучших владельцев, чьи домашние животные обслуживались чаще всего.

SELECT 
    a.`Owner_ID`,
    a.`Owner_Name`,
    COUNT(*) as `Times_Serviced`
FROM `Owner` a
JOIN `Puppys` b
ON a.`Owner_ID` = b.`Owner_ID`
JOIN `Service_Done` c
ON c.`Puppy_ID` = b.`Puppy_ID`
GROUP BY a.`Owner_ID`
ORDER BY count(*) DESC
LIMIT 5;

Изменив группу на, вы также можете вернуть домашних животных, которых обслуживали больше всего. Вы также можете сгруппировать результаты по годам (или другим периодам времени).

DEEPAK LAKHOTIA ответил: 28 марта 2018 в 04:19

Приведенный выше запрос даст владельцу наибольшее количество обслуживаемых щенков, сгруппировав его по владельцу и упорядочив по его случаю обслуживания (по убыванию).

SELECT Top 1 o.Owner_Name  --Owner with most servicing
FROM Owner o
JOIN Puppys p ON o.Owner_ID = p.Owner_ID
JOIN Service_Done c ON c.Puppy_ID = p.Puppy_ID
GROUP BY o.Owner_ID  --grouping based on owner
ORDER BY count(*) DESC --order in descending order on the count of occurences 
Vinay Prajapati ответил: 28 марта 2018 в 04:04
Положите некоторые объяснения приятель!
DEEPAK LAKHOTIA ответил: 28 марта 2018 в 04:12
Приведенный выше запрос даст вам владельца с наибольшим количеством обслуживаемых щенков, сгруппировав его по владельцу и упорядочив его по фактам обслуживания (по убыванию). SELECT Top 1 o.Owner_Name - владелец с наибольшим количеством обслуживающих от владельца o присоединиться Puppys p ON o.Owner_ID = p.Owner_ID JOIN Service_Done c ON c.Puppy_ID = p.Puppy_ID GROUP BY o.Owner_ID --группировка на основе владельца ORDER BY count (*) DESC - порядок в порядке убывания количества событий
Adam Kipnis ответил: 28 марта 2018 в 04:16
Спасибо за предоставленную дополнительную информацию. Для полноты, пожалуйста, поместите это в свой ответ как редактирование, а не комментарий к своему ответу.
DEEPAK LAKHOTIA ответил: 28 марта 2018 в 04:20
Готово, отметьте это как ответ, если это так.