2014-02-07 197 views
0

好的,我試圖從這三個表中獲取所有記錄。MySQL左外部連接或內部連接

表之間的關係是。有許多房間

有一所房子,一個房間有許多預訂記錄

我用下面的查詢,但我不認爲這個工程完全我想

,因爲他們使用的house_code保持的方式獨特...(我認爲)

SELECT H.house_code, H.description 
    FROM House H 
     LEFT OUTER JOIN Room R 
      ON H.house_code = R.house_code 
     LEFT OUTER JOIN Room_Book RB 
      ON H.house_code = RB.house_code 
+0

你想要什麼樣的方式? –

+0

你只從'House'選擇'house_code'和'description';你沒有從'Room'或'Room_Book'選擇任何字段,你期望發生什麼? – Moho

回答

0

對於這種類型的查詢,inner join應該罰款。沒有理由認爲代碼將在主表中未定義的其中一個表中(如room)。

然而,你的最後一個加入也許應該包括房間ID以及:

SELECT H.house_code, H.description 
FROM House H INNER JOIN 
    Room R 
    ON H.house_code = R.house_code INNER JOIN 
    Room_Book RB 
    ON H.house_code = RB.house_code RB.Room_Id = R.Room_Id; 

這是一個有點投機。樣本數據可以清晰地解決問題。

0

豈不是:

SELECT H.house_code, H.description 
FROM House H 
    INNER JOIN Room R 
     ON H.house_code = R.house_code 
    INNER JOIN Room_Book RB 
     ON H.house_code = RB.Room_id 
0

因爲左邊的連接,你會得到府志的房間是否上市或任何其房間被預訂。

將會有重複的記錄。您會看到每個房屋代碼和說明的重複列表,其中房間數乘以Room_Book記錄數。

如果您希望記錄是唯一的,只需查詢House表或按某種類型的組或使用選擇區別。

建議:在每個表格中顯示一些示例條目,然後顯示您希望獲得的結果集,您將獲得更多幫助。