MySQL内连接3个表

6
假设我有3张表:
  • Passenger(Id [pk],name)
  • Airplane(registration [pk],num_seats)
  • Booking(Id,passenger_id [fk -> Passenger.Id] airplane_registration [fk -> Airplane.registration]
在这里,预订表将是一个连接对象,因为乘客和预订之间存在多对多的关系。
如何选择与特定预订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已在我的计算机上崩溃。


嗨OMG Ponies,我的格式有错误吗?如果是的话,我做错了什么?谢谢。 - Joeblackdev
1
问候语(例如:你好)和客套话(例如:谢谢)是浪费屏幕空间的(如果接受率低于50%,则是侮辱性的)。我尽力在可以的时候提高可读性-这样更有可能得到帮助。 - OMG Ponies
2个回答

1

是的,您的查询可以用于获取特定预订ID的乘客和航班详情。要获取所有预订,我会添加一个ORDER BY bookingID,如果需要,再按乘客姓名和航班注册号排序。


0

没有了解你的架构,无法确定,但在我看来那看起来很好。


你好。抱歉没有澄清。我已经更新了原始帖子。正如你所看到的,Booking表包含2个外键。第一个引用了Passenger表中的主键“Id”,第二个引用了Airplane表中的主键“registration”。 - Joeblackdev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接