2010-01-20 9 views
5

gars Hai, J ai jusqu'ici utilisé JOIN avec deux tables, mais maintenant je veux me joindre à trois tables qui est montrée ci-dessous figurerejoindre trois tables dans SQL Server 2005

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

J'ai essayé pour joindre deux tables,

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

comment rejoindre la troisième table avec cette .... Toute suggestion ...

+0

Que voulez-vous sélectionner parmi les tables? –

+0

@ clients individuels détails de la commande –

+0

aah ... vous battez la normalisation de base de données à la terre :) (sur 'OrderTotal' dans' Orders') –

Répondre

11

Vous faites la même chose, avec la troisième table:

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

Vous pouvez simplement ajouter un autre REJOIGNEZ à la fin:

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

Notez que les informations de commande de niveau supérieur (numéro de commande, numéro de client, commande Nom totale et le client) sera retourné pour CHAQUE article de commande dans une commande. Ainsi, en fonction du scénario, vous souhaiterez peut-être récupérer les données de premier niveau en premier, puis renvoyer tous les détails des articles de commande séparément pour enregistrer les lots de données en double. Cela dépend de la situation, mais cela vaut la peine d'être mentionné.

+0

@Dev merci pour vos commentaires travaillera sur ce .. –

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