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:%
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Â.clave
left join
(select campos from tabla1 where condicion3) as c3 on c1.claveÃ.clave
left join
(select campos from tabla1 where condicion4) as c4 on c1.claveÄ.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*



Respuesta Responder a este mensaje
#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:
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:%
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Â.clave
left join
(select campos from tabla1 where condicion3) as c3 on c1.claveÃ.clave
left join
(select campos from tabla1 where condicion4) as c4 on c1.claveÄ.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*







Respuesta Responder a este mensaje
#3 Alejandro Mesa
11/04/2007 - 18:44 | Informe spam
Sergio E.,

where ultimofiltro



Que es lo que hay en ese ultimo filtro?


AMB


"Sergio E." wrote:

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Â.clave left
join
(select campos from tabla1 where condicion3) as c3 on c1.claveÃ.clave left
join
(select campos from tabla1 where condicion4) as c4 on c1.claveÄ.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*




Respuesta Responder a este mensaje
#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:%
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Â.clave
left join
(select campos from tabla1 where condicion3) as c3 on c1.claveÃ.clave
left join
(select campos from tabla1 where condicion4) as c4 on c1.claveÄ.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*



Respuesta Responder a este mensaje
#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:
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:%
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Â.clave
left join
(select campos from tabla1 where condicion3) as c3 on c1.claveÃ.clave
left join
(select campos from tabla1 where condicion4) as c4 on c1.claveÄ.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*






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida