Interbase - UNION (Query)

 
Vista:

UNION (Query)

Publicado por JFreak (2 intervenciones) el 21/12/2002 16:50:15
Alguien ha utilizado mas de un UNION en un query ??, tengo la version opensource de interbase y cuando quiero hacer un query con mas de un UNION tengo problemas alguien lo ha hecho ??

Ejemplo:
Select rep.respuesta, "SCOUT"
from nt2alcs acs
left join nt1pral rep on (acs.idalumno = rep.idalumno)
where acs.idciclo=:idciclo and
rep.idpregunta = 16
UNION
Select rep.respuesta, "VOLLEY BALL"
from nt2alcs acs
left join nt1pral rep on (acs.idalumno = rep.idalumno)
where acs.idciclo=:idciclo and
rep.idpregunta = 18
UNION
Select rep.respuesta, "BASKET BALL"
from nt2alcs acs
left join nt1pral rep on (acs.idalumno = rep.idalumno)
where acs.idciclo=:idciclo and
rep.idpregunta = 20
order by 1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:UNION (Query)

Publicado por Fabian (10 intervenciones) el 23/12/2002 22:54:11
Hola:
Trata de armar la sentencia en un solo select.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:UNION (Query)

Publicado por JFreak (2 intervenciones) el 26/12/2002 16:25:56
Hola, gracias por tu comentario, pero el problema es que con un solo query no me sirve para este caso en particular, el siguiente query fue el query original pero no me dio resultado primero porque es exageradamente lento y segundo porque se tiene que cumplir que por cada alumna se hayan contestado cada pregunta (las 4 preguntas que me interesan) pero esto no sirve porque en 950 alumnos mas o menos solo 4 participan en las 5 actividades, si en el query en lugar de utilizar el AND uso un OR se vuelve un producto cartesiano que sirve menos.

select
alu.apellidos,
alu.nombres,
rep1.repuesta Scout,
rep2.repuesta Volley,
rep3.repuesta Basket,
rep4.repuesta FootBal,
rep5.repuesta Coro
from nt2alcs acs
left join nt0alum alu on (acs.idalumno = alu.idalumno)
left join nt0fami fam on (alu.idfamilia = fam.idfamilia)
left join sl0reli rel on (alu.idreligion = rel.idreligion)
left join nt1pral rep1 on (acs.idalumno = rep1.idalumno)
left join nt1pral rep2 on (acs.idalumno = rep2.idalumno)
left join nt1pral rep3 on (acs.idalumno = rep3.idalumno)
left join nt1pral rep4 on (acs.idalumno = rep4.idalumno)
left join nt1pral rep5 on (acs.idalumno = rep5.idalumno)
where acs.idciclo=:idciclo and
rep1.idpregunta = 16 and
rep2.idpregunta = 18 and
rep3.idpregunta = 20 and
rep4.idpregunta = 22 and
rep5.idpregunta = 24
order by alu.apellidos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:UNION (Query)

Publicado por leo (1 intervención) el 04/09/2003 01:40:15
si el error que te tira es de data type unknown, lo que tenes que haser es un cast, con la funcion cast en los datos que calcules
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar