2011-05-09 51 views
6

假設我有3個表的MySQL innerjoin 3表

  • 乘客(ID [PK],名稱)
  • 飛機(註冊[PK],NUM_SEATS)
  • 預訂(ID,passenger_id[FK - > Passenger.Id]airplane_registration[FK - > Airplane.registration]

由於Passenger和Booking表之間存在多對多關係,因此預訂表將成爲交匯點對象。

我怎樣才能選擇與某個預訂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在我的機器上出現故障。

+0

嗨OMG小馬,我在格式上犯了錯誤嗎?如果是這樣,我做錯了什麼?謝謝 – Joeblackdev 2011-05-09 22:54:50

+1

Salutations(IE:Hi)和陳詞濫調(IE:謝謝)浪費了屏幕房地產(如果接受評級低於50% - 侮辱)。我儘可能提高可讀性 - 更有可能你會得到幫助。 – 2011-05-09 23:01:02

回答

1

是的,您的查詢可用於獲取乘客的詳細信息以及特定預訂ID的航班信息。爲了獲得所有預訂,我會添加ORDER BY bookingID,如果需要乘客姓名和航班註冊。

0

不知道你的模式,沒有辦法確定,但對我來說看起來很好。

+0

你好。道歉不澄清。我已更新我的原始帖子。如您所見,預訂表包含2個外鍵。第一個引用Passenger表中的主鍵'Id',第二個引用表Airplane中的主鍵'註冊'。 – Joeblackdev 2011-05-09 23:01:25