Forums Últimos mensajes - Powered by IBM
 

Cómo hacer un LEFT JOIN "anidado"

03/06/2008 - 11:11 por Don Juan | Informe spam
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.
 

Leer las respuestas

#1 Jumac
03/06/2008 - 16:29 | Informe spam
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" escribió en el mensaje
news:
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.


Preguntas similares