объединить три таблицы в SQL Server 2005 - PullRequest
5 голосов
/ 20 января 2010

До сих пор я использовал соединение с двумя таблицами, но теперь я хочу объединить три таблицы, как показано на рисунке ниже

alt text
(источник: microsoft.com )

Я пытался объединить две таблицы,

SELECT O.OrderID,O.CustID,O.OrderTotal,C.Name from Orders
as O inner join Customers as C on O.CustID=C.CustID 

как присоединиться к третьей таблице с этим .... Любое предложение ...

Ответы [ 3 ]

11 голосов
/ 20 января 2010

Вы делаете то же самое, с третьей таблицей:

SELECT O.OrderID,O.CustID,O.OrderTotal,C.Name, OC.OrderAmount
FROM Orders as O 
INNER JOIN Customers as C 
  ON O.CustID=C.CustID 
INNER JOIN OrderItems as OC
  ON O.OrderID=OC.OrderID 
3 голосов
/ 11 ноября 2012
    Select Customers.Name
    From OrderItems                            --      (Table 1)
    INNER JOIN Orders                          --      (Table 2)
    ON OrderItems.OrderID = Orders.OrderID
    INNER JOIN Customers                       --      (Table 3)
    ON Orders.CustID = Customers.CustID
    Where Customers.CustID = 2                 --      This will give you the name of the second customer in the third table using JOINS
3 голосов
/ 20 января 2010

Вы можете просто добавить еще один JOIN в конце:

inner join OrderItems as OI ON O.OrderID= OI.OrderID

Обратите внимание, что информация о заказе верхнего уровня (идентификатор заказа, идентификатор клиента, общая сумма заказа и имя клиента) будет возвращена для КАЖДОЙ позиции заказа в рамках заказа. Поэтому, в зависимости от сценария, вы можете сначала получить данные верхнего уровня, а затем вернуть все детали позиции заказа отдельно, чтобы сохранить возвращаемые партии дублированных данных. Зависит от ситуации, но думал, что стоит упомянуть.

...