MySQL内连接3个表

时间:2011-05-09 22:49:28

标签: mysql sql inner-join

假设我有3张桌子

  • 乘客(Id [pk],姓名)
  • 飞机(注册[pk],num_seats)
  • 预订(ID, passenger_id [fk - > Passenger.Id] airplane_registration [fk - >飞机。注册的)

预订表将是一个交叉点对象,因为乘客和预订表之间存在多对多的关系。

如何选择与特定预订ID相关的所有详细信息(例如'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 个答案:

答案 0 :(得分:1)

是的,您的查询可用于获取特定预订ID的乘客和航班的详细信息。为了获得所有预订,我会添加一个ORDER BY bookingID,如果需要,还可以通过乘客姓名和航班登记。

答案 1 :(得分:0)

在不知道你的架构的情况下,没有办法确定,但这看起来对我很好。