2010-01-20 14 views
5

chicos Hai, i ve por lo tanto se usa ahora se unen a los dos mesas pero ahora quiero juntar tres tablas que se muestran en el siguiente figunen tres tablas en SQL Server 2005

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

Yo he intentado para unir dos tablas,

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

cómo unirse a la tercera mesa con esto .... Cualquier sugerencia ...

+0

¿Qué desea seleccionar de las tablas? –

+0

@ clientes individuales detalles del pedido –

+0

aah ... usted está superando la normalización de la base de datos a la tierra :) (en 'OrderTotal' en' Pedidos') –

Respuesta

11

que hacer lo mismo, con la tercera tabla:

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

Usted puede añadir otra combinación que hasta el final:

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

Tenga en cuenta, que la orden Info de nivel superior (identificación de la orden, ID de cliente, Nombre de pedido del total y el cliente) se devolverá para CADA artículo pedido dentro de un pedido. Por lo tanto, dependiendo del escenario, es posible que desee recuperar primero los datos de nivel superior y luego devolver todos los detalles del elemento de pedido por separado para guardar los lotes devueltos de datos duplicados. Depende de la situación, pero pensó que vale la pena mencionarla.

+0

@Dev gracias por tus comentarios. –

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 
Cuestiones relacionadas