problema con una consulta compleja

11/04/2007 - 17:54 por Sergio E. | Informe spam
Hola, estoy haciendo una consulta algo compleja que en esencia es como
sigue:

select c1.*, c2.*, c3.*,c4.* from
(select campos from tabla1 where condicion1) as c1 left join
(select campos from tabla1 where condicion2) as c2 on c1.clave=c2.clave left
join
(select campos from tabla1 where condicion3) as c3 on c1.clave=c3.clave left
join
(select campos from tabla1 where condicion4) as c4 on c1.clave=c4.clave
where ultimofiltro order by c1.campox

El detalle es que si el primer select no trae datos, no me muestra nada,
aunque yo se que el segundo y/o tercer select si tienen y el cuarto no
siempre trae,

El objetivo es consultar datos de una tabla, donde cada select from tabla1
me trae datos de un mes distinto, y quiero que se vean todos los campos uno
junto a otro de todos los selects..
por ejemplo

enero | febrero | marzo | abril
datos select1 | datos select2 | datos select3 | datos select4
venta1 prom1| venta2 prom2| venta3 prom3| venta3 prom4


¿Alguien me puede dar alguna sugerencia la respecto?

Saludos y gracias.
Sergio E.
DCE2005 - 2*

Preguntas similare

Leer las respuestas

#1 Pepe
11/04/2007 - 18:03 | Informe spam
Si haces Left joins es normal que no te muestre registros si la parte
izquiera ( primera Select ) no devuelve registros... yo empezaria revisando
como funciona y cuando te interesa utilizar LEFT , INNER y RIGHT JOIN y a
partir de ahi hacer la consulta correctamente...



"Sergio E." <gruporemp[ARROBA]hotmail.com> escribió en el mensaje
news:%
Mostrar la cita
#2 Sergio E.
11/04/2007 - 18:24 | Informe spam
probe con inner y no me trae datos, con left es lo mismo que con right, y
con full si me trae datos pero no me sirven asi pues me trae muchos nulos

Saludos,
Sergio E.
DCE2005 - 2*


"Pepe" escribió en el mensaje
news:
Mostrar la cita
#3 Alejandro Mesa
11/04/2007 - 18:44 | Informe spam
Sergio E.,

Mostrar la cita
Que es lo que hay en ese ultimo filtro?


AMB


"Sergio E." wrote:

Mostrar la cita
#4 Javier Loria
11/04/2007 - 19:19 | Informe spam
Hola Sergio:
Deberas hacer 2 cambios:
a) Reemplaza los LEFT JOIN por FULL OUTER JOIN
b) Y en el Where cuida de no estar filtrando las filas nulas. Debes
tomar la precaucion de hacer algo como (ColX=1 OR ColX IS NULL) AND (ColY=2
OR ColY IS NULL) ...
Saludos,

Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


"Sergio E." <gruporemp[ARROBA]hotmail.com> wrote in message
news:%
Mostrar la cita
#5 Sergio E.
11/04/2007 - 19:26 | Informe spam
filtros por nulos no hago, y en mis consultas internas tengo por ejemplo
select isnull(campo,0) as campo
voy a probar el full outer join...
gracias

Saludos,
Sergio E.
DCE2005 - 2*


"Javier Loria" escribió en el mensaje
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida