Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Cómo hacer un LEFT JOIN "anidado"

5,844 views
Skip to first unread message

Don Juan

unread,
Jun 3, 2008, 5:11:03 AM6/3/08
to
Hola grupo
Tengo las tablas siguientes:
Clientes (ID_Cliente)
Ordenes (ID_Orden - ID_Cliente)
Reclamos (ID_Reclamo - ID_Orden)

Necesito hacer un Select que me permita tener algo así:
NombreClinete NumerodeOrden Reclamos
Carlos 12 No
Juan 13 Si
Maria No hay orden No

Considerando que tengo que listar los clientes que hayan hecho una orden o
no (en una fecha determinada) si el cliente tiene una orden entonces mostrar
si tiene reclamos o no
He llegado a realizar el primer FELT JOIN, pero no sé cómo hacer los
reclamos, esta Tabla tiene un ID_Orden.

Select C.NombreCliente, O.ID_Orden
From Clientes C
LEFT JOIN Ordenes O
ON C.ID_Cliente=O.ID_Cliente


Gracias por su ayuda.


Jumac

unread,
Jun 3, 2008, 10:29:46 AM6/3/08
to
Esta es una posibilidad:
SELECT Clientes.Id_Cliente, ISNULL(Ordenes.Id_Orden, 'No hay orden') as
NumerodeOrden,
ISNULL(Reclamos.Id_Reclamo, 'No')
FROM (Ordenes INNER JOIN Reclamos ON Ordenes.Id_Orden=Reclamos.Id_Orden)
RIGHT JOIN Clientes ON Ordenes.Id_Cliente=Clientes.Id_Cliente

Otra, utilizando subconsulta:
SELECT Clientes.Id_Cliente, ISNULL(Subconsulta.Orden, 'No hay orden') as
NumerodeOrden,
ISNULL(Subconsulta.Reclamo, 'No')
FROM Clientes LEFT JOIN
(SELECT Ordenes.Id_Cliente, Ordenes.Id_Orden as Orden, Reclamos.Id_Reclamo
as Reclamo
FROM Ordenes INNER JOIN Reclamos ON Ordenes.Id_Orden=Reclamos.Id_Orden) as
Subconsulta
ON Clientes.Id_Cliente=Subconsulta.Id_Cliente

Espero haberte ayudado.
Saludos
Juan

"Don Juan" <Jua...@gmail.com> escribió en el mensaje
news:5B0F67C6-6534-4124...@microsoft.com...

0 new messages