alexus
Профи
(703)
4 года назад
select a.Name,ss.Name as BreedName,a.Height from Dogs a INNER JOIN (select b.ID, b.Name,max(d.Height) as H from Dogs d LEFT JOIN Breeds b ON b.ID=d.Breed group by b.Name) ss ON a.Breed=ss.ID AND a.Height=ss.H
Внутренний запрос находит максимальный рост по всем породам. По этой информации мы находим записи из таблицы собак. Данный скрипт по идее должен показать даже всех собак одной породы с одинаковым ростом
Таблица Dogs
IDNameHeightFatherBreed
1Sed6757 8 1
2Der8953 4 4
3Vot5645 60 2
4Saq9654 6 5
5Mer3446 5 6 3
6Let7857 14 4
7Vert34765 6 6 1
8Bon56756 7 2
Breeds
IDName
1pug
2dalmatian
3buldog
4shepherd
5dachshung
Таблицы связаны друг с другом Dogs.Breed = Breeds.ID
Задача вывести список собак с максимальным ростом по каждой породе.
Мой код
SELECT Breeds.Name, Dogs.Height
FROM Dogs INNER JOIN Breeds ON Dogs.Breed = Breeds.ID
WHERE Dogs.Height IN (SELECT MAX(Dogs.Height) FROM Dogs INNER JOIN Breeds ON Dogs.Breed = Breeds.ID);
Делал сам, но не получилось. Спасибо большое.