2013-05-02 39 views
0

我有5個表,我需要查詢,我不確定如何做到這一點。我正在考慮使用多個內部連接,但是我得到了很多錯誤。內部加入超過2個表

這裏是我想要做的一個例子:

表:

Customer 
ID Name  State hotelID 
1 George W.A 1 
2 Franklin N.S.W 2 

Bus 
ID Make 
1 Hino 
2 Mercedes 
3 Leyland 

Hotel 
ID Name 
1 Hyatt 
2 Sebel 

Tour 
ID tourName busID 
1 Japan 1 
2 America 1 
3 Austria 2 


tour-CustLink 
ID tourID custID 
1 1  1 
2 2  2 
3 3  3 

比方說,查詢到郵件列表的名字,誰住在凱悅接着日野客車的客戶狀態,我會如何去做這件事?

這些表格並不是我正在使用的,我只是喜歡它在這樣的例子中,並且有很多代碼可以添加。

+0

考慮爲我們提供友好的DDL或sqlfiddle。這就是說,這是簡單的。 – Strawberry 2013-05-02 16:47:21

+3

這是需求聲明(「我有5個需要查詢的表」)。缺少的是實際做到的任何努力。 – 2013-05-02 16:50:10

回答

3

事情是這樣的......

SELECT c.Name, c.State 
FROM tourCustLink AS tcl 
INNER JOIN Customer AS c ON tcl.custID = c.ID 
INNER JOIN Hotel AS h on c.hotelID = h.ID 
INNER JOIN Tour AS t on tcl.tourID = t.ID 
INNER JOIN Bus AS b on t.busID = b.ID 
WHERE h.Name = 'Hyatt' 
AND b.Make = 'Hino' 

但要注意,這是不是最優的......有點爲時過早真的... 8-)

+0

Thankyou,它似乎尷尬添加像5個連接,我被拋出這麼多的錯誤.. – ReallyGoodPie 2013-05-02 16:59:42

0

只要繼續JOIN荷蘭國際集團他們...

根據您的數據,這可能會出現重複,例如,如果客戶住在多家酒店或進行多次導遊,您可能需要重新構造它,或在SELECT之後添加DISTINCT子句。

SELECT 
    c.[name] 
    ,c.[state] 
FROM 
    Customer AS c 
JOIN 
    Hotel AS h 
     ON h.[ID] = c.[hotelID] 
JOIN 
    tour-CustLink AS tcl 
     ON tcl.[CustID] = c.[ID] 
JOIN 
    Tour AS t 
     ON t.[ID] = tcl.[tourID] 
JOIN 
    Bus AS b 
     ON b.[ID] = t.[BusID] 
WHERE 
    b.[Make] = 'Hino' 
    AND h.[name] = 'Hyatt'