MySQL innerjoin 3 таблицы - PullRequest
6 голосов
/ 10 мая 2011

Предположим, у меня было 3 стола

  • Пассажир (Id [pk], имя)
  • Самолет (регистрация [pk], num_seats)
  • Бронирование (Id, passenger_id [fk -> Passenger.Id] , flight_registration [fk -> Airplane.registration] )

Здесь таблица бронирования будет соединительным объектом, так как между таблицами Passenger и Booking есть взаимосвязь между многими.

Как я могу выбрать все детали, связанные с конкретным идентификатором бронирования (скажем, «abcde»)?

Правильно ли это:

SELECT Passenger.name, Airplane.num_seats, Booking.Id
  FROM Booking 
  JOIN Passenger ON Passenger.Id = Booking.passenger_Id
  JOIN Airplane ON Booking.airplane_registration = Airplane.registration
 WHERE Booking.Id = 'abcde';

Это правильный способ сделать это? Кроме того, если бы я хотел выбрать все заказы и их детали, я бы сделал это так же? (Без предложения where)?

Я пытался выяснить, было ли это правильно для теста, поскольку MySQL отключился на моей машине.

Ответы [ 2 ]

1 голос
/ 10 мая 2011

Да, ваш запрос будет работать для получения информации о пассажирах и рейсе для конкретного идентификатора бронирования.Для получения всех бронирований я бы добавил ORDER BY bookingID и, если необходимо, имя пассажира и регистрацию рейса.

0 голосов
/ 10 мая 2011

Не зная вашей схемы, невозможно быть уверенным, но для меня это выглядит прекрасно.

...