2010-01-20 27 views
5

Hai chłopaki, I ve dotychczas stosowane złączyć z dwóch tabel, ale teraz chcę dołączyć trzy tabele, który jest pokazany na poniższym rysunkudołączyć trzy tabele w SQL Server 2005

alt text http://i.msdn.microsoft.com/ms152507.75c9e4c3-260d-4b8d-8a27-b720d8f4470e%28en-US,SQL.90%29.gif

I ve wypróbowany do przyłączenia dwie tabele,

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

jak dołączyć trzecią tabelę z tego .... Wszelkie sugestie ...

+0

Co chcesz wybrać z tabel? –

+0

@ klienci indywidualni szczegóły zamówienia –

+0

aah ... bijesz normalizację bazy danych na ziemię :) (na 'OrderTotal' w' Orders') –

Odpowiedz

11

robisz to samo, trzecia tabela:

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

Można tylko dodać kolejny JOIN na końcu:

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

nocie, że informacji porządek top-level (identyfikator zamówienia, identyfikator klienta, nakazać całkowite i klientów Nazw) zostanie zwrócony za KAŻDY element zamówienia w ramach zamówienia. Tak więc, w zależności od scenariusza, możesz najpierw pobrać dane najwyższego poziomu, a następnie zwrócić wszystkie szczegóły elementu zamówienia osobno, aby zapisać powracające partie zduplikowanych danych. Zależy od sytuacji, ale pomyślał, że warto o tym wspomnieć.

+0

@Dev dzięki za komentarze będą pracować nad tym .. –

3
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 
Powiązane problemy