List:Spanish« Previous MessageNext Message »
From:Juan F. Capristán W. Date:March 4 2005 9:35am
Subject:Re: Duda sobre union de dos consultas
View as plain text  
Hola Eloy,
no hay manera de hacer una única consulta por el group by, pero si lo que 
necesitas es obtener el resultado en una única tabla, puedes crear tablas 
temporales, y luego unirlas. Algo así (he simplificado un poco las 
consultas para hacerlas menos tediosas):

create temporary table t1 SELECT
usuario.datos,
ptb.f_inicio AS fechaInicio,
ptb.f_fin AS fechaBaja,
ptb.f_fin-ptb.f_inicio AS parcialDiasSinServicio    #esta resta no creo que 
funcione bien así
FROM usuario
LEFT JOIN ptb ON usuario.Id=ptb.id_abuelo;

create temporary table t2 SELECT
usuario.datos,
sum(ptb.f_fin-ptb.f_inicio) AS totalDiasSinServicio
FROM usuario
LEFT JOIN ptb ON usuario.Id=ptb.id_abuelo
GROUP BY usuario.datos;

select * from t1,t2 where t1.id=t2.id;

y finalmente borrar las tablas temporales (drop table t1; y drop table t2;)

Espero haberte ayudado.
Un saludo,
         Juan.

P.D.: La resta "ptb.f_fin-ptb.f_inicio", ¿te funciona?... si f_fin y 
f_inicio son de tipo date o similar, es mejor que trabajes con las 
funciones específicas para sumar/restar fechas.


At 19:42 03/03/2005, you wrote:
>Hola a todos,
>no se si alguien que tenga algo de tiempo puedises echar un vistazo a
>estas dos consultas que aqui planteo:
>
>Tengo dos tablas relacionadas, una de usuarios con un id numerico como
>pk y una de suspensiones temporares que tiene como fk el id del
>usuario de la primera tabla.
>
>Bien, el tema es que me gustaria obtener una consulta que me retorne
>algo parecido a esto :
>
>usuario,  rango baja 1  numdias1   ,   total (suma de los numdias)
>              rango baja 2   numdias2
>
>Hasta el momento he logrado hacerlo, pero mediante 2 consultas
>distintas, y no se me ocurre como puedo unirlas. Las consultas que
>tengo hechas son:
>
>SELECT usuario.nombre, usuario.apellidos, usuario.domicilio, [periodo
>temporal baja].f_inicio AS fechaInicio, [periodo temporal baja].f_fin
>AS fechaBaja, [periodo temporal baja].f_fin-[periodo temporal
>baja].f_inicio AS parcialDiasSinServicio
>
>FROM usuario
>LEFT JOIN [periodo temporal baja] ON usuario.Id=[periodo temporal
>baja].id_abuelo;
>
>y
>
>SELECT usuario.Id, usuario.nombre, usuario.apellidos,
>usuario.domicilio, sum([periodo temporal baja].f_fin-[periodo temporal
>baja].f_inicio) AS totalDiasSinServicio
>
>FROM usuario
>LEFT JOIN [periodo temporal baja] ON usuario.Id=[periodo temporal
>baja].id_abuelo
>GROUP BY usuario.Id, usuario.nombre, usuario.apellidos, usuario.domicilio;
>
>¿A alguien se le ocurre como podria conseguir unir las consultas?
>
>Un saludo a todos. Eloy.

Attachment: [text/html]
No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.308 / Virus Database: 266.6.0 - Release Date: 02/03/2005
Thread
Duda sobre union de dos consultasEloy Mier Pérez3 Mar
  • Re: Duda sobre union de dos consultasJuan F. Capristán W.4 Mar
  • Re: Duda sobre union de dos consultasCarles Ferrer Martinez4 Mar
RE: Duda sobre union de dos consultasEloy Mier Pérez4 Mar