СГРУППИРОВАТЬ ПО всем столбцам?

#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. ДА. я обновлю его