Справочная информация : Покемон приветствовал свое 20-летие в 2016 году.
Поскольку Pokemon Pikachu является самым знаковым Pokemon, клуб Moke планирует вручить одноразовую награду члену, который получил наибольшее количество Pikachu, отправив электронный ваучер по электронной почте.
Вопрос: Узнайте участника, который поймал наибольшее число Пикачу в 2016 году. Показать имя участника, идентификатор участника, номер пойманного Пикачу и адрес электронной почты , Использование подзапроса или подзапроса с внутренним соединением.
Связанные отношения: участие, PokemomParticipation и Member (ниже приведен снимок таблицы отношений. (Таблица была изменена для отображения результата, относящегося к запросу)
PokemomParticipation:
Участие в Pokemon
Pokemom:
Pokemon
Группа:
Участник
Из базы данных видно, что участник, который набрал наибольшее количество Пикачу, имеет идентификатор участника, равный 10, и его зовут Маркус. Идентификатор покемона Пикачу равен 10. Следовательно, эти три отношения необходимы для решения вопросов.
Мой ответ (неправильное решение):
USE MokeClub
GO
SELECT m.MemberID, m.Name, m.Email,pp.NumCaught
FROM Member m INNER JOIN PokemonParticipation pp
ON m.MemberID = pp.MemberID
INNER JOIN Pokemon pk
ON pp.PokemonID =pk.PokemonID
WHERE pp.DateCaught >'2015-Dec-31' AND pp.DateCaught <'2017-Jan-01' AND pk.PokemonName ='Pikachu'
AND
NumCaught = (SELECT MAX(NumCaught)
FROM PokemonParticipation )
Изображение: НЕПРАВИЛЬНОЕ Решение
Проблема с этим решением в том, что ничего не отображается.
Большое спасибо за вашу щедрую помощь!
Я пытался исследовать в Интернете, но не смог понять смысл объяснения. Я все еще новичок в запросе SQL.
РЕДАКТИРОВАНИЕ (ПРАВИЛЬНЫЕ РЕШЕНИЯ)
Правильное решение