#mysql #sql #database #group-by #having
Вопрос:
Новичок в MySQL, не смог найти правильный ответ здесь.
У меня есть эти таблицы: Пассажиры и Билеты. Мне нужно показать все данные пассажиров, купивших 5 билетов, а не только удостоверение личности
Мне удалось это сделать, но мне нужны все данные пассажиров.
SELECT Passenger.IdPassenger FROM Passengers JOIN Ticket ON Passenger.IdPassenger = Ticket.IdPassenger GROUP BY Passenger.IdPassenger HAVING COUNT(*) = 5;
Единственный способ, которым mysql позволяет мне показывать все данные пассажиров, — это ВЫБРАТЬ*, а затем в предложении GROUP BY поместить КАЖДЫЙ столбец, есть ли способ создать группу по всем, как group by * ?
Ответ №1:
GROUP BY
таблица билетов в производной таблице, чтобы получить 5 идентификаторов билетов. JOIN
:
select p.* from Passengers p join (SELECT IdPassenger FROM Ticket GROUP BY IdPassenger HAVING COUNT(*) = 5) t ON p.IdPassenger = t.IdPassenger
Ответ №2:
Вы можете использовать идентификаторы в подзапросе, чтобы получить все данные :
select * from Passengers p where p.IdPassenger in (select Ticket.IdPassenger from Ticket group by Ticket.IdPassenger having count(*) = 5)
Комментарии:
1. Я предполагаю, что в подзапросе может быть только таблица билетов.
2. ДА. я обновлю его