0

我有 5 个需要查询的表,但我不确定如何执行此操作。我正在考虑使用多个内部连接,但是我遇到了很多错误。

这是我想做的一个例子:

表:

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

假设查询是列出住在凯悦酒店并乘坐日野巴士的客户的姓名、状态,我该怎么做呢?

这些表不是我实际使用的表,我只是更喜欢在这样的示例中使用它,并且有很多代码可以添加。

4

2 回答 2

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-)

于 2013-05-02T16:48:46.707 回答
0

你可以继续JOINing 他们...

这可能会根据您的数据显示重复,例如,如果客户住在多家酒店或多次旅行,您可能需要对其进行重组或添加一个DISTINCT子句。SELECT

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'
于 2013-05-02T16:48:57.810 回答