Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema Con Union All (https://www.clubdelphi.com/foros/showthread.php?t=32101)

poniente 26-05-2006 12:32:44

Problema Con Union All
 
HOLA Y GRACIAS POR EL FORO

MI PROBLEMA ES EL SIGUIENTE:

TENGO 2 TABLAS DE LAS QUE QUIERO EXTRAER DATOS: CABRAS Y MACHOS
TABLA CABRAS: CODIGOCABRA, FECHANACIMIENTO, CODIGOMADRE
TABLA MACHOS: CODIGOMACHO, FECHANACIMIENTO, CODIGOMADRE

YO QUIERO REALIZAR LA SIGUIENTE CONSULTA:

A PARTIR DE UN CODIGOMADRE QUIERO SABER EL NUMERO DE HIJOS TOTALES AGRUPADOS POR AÑO DE NACIMIENTO QUE TIENE ESA MADRE.
(CABRAS Y MACHOS). CODIGOMADRE ES IGUAL QUE CODIGOCABRA.
YO HE HECHO LO SIGUIENTE PERO NO ME SALE COMO YO QUIERO

Select fechanacimiento Año,count(Codigocabra) Hijos from Cabras
where madre='ADY92023' and (LibroGenealogico='RD' or Librogenealogico='RN')
group by Año
UNION ALL
Select fechanacimiento Año,count(Codigomacho) Hijos from Machos
where madre='ADY92023' and (LibroGenealogico='RD' or Librogenealogico='RN')
group by Año
order by AÑO desc

Y ME MUESTRA LO SIGUIENTE:

AÑO HIJOS
09/09/1998 1
04/09/1998 1
01/09/1998 1
10/09/1997 2
30/08/1996 1
30/08/1996 1
04/09/1995 1

YO QUIERO QUE SALGA EL 30/08/1996 ASI:
AÑO HIJOS
30/08/1996 2

waltergomez 26-05-2006 16:06:39

No uses UNION. Us aun select distinct sobre cabras y machos con un join que incluya todo.
Salu2,

poniente 29-05-2006 09:55:04

No controlo muy bien el JOIN
 
He intentado utilizando el JOIN pero no me sale, ¿ te importaria decirme mas o menos como se podria hacer?, es que el JOIN no lo manejo muy bien, gracias

tcp_ip_es 29-05-2006 17:09:30

Con lo que tu tienes lo englobas otra vez y ya esta....
Código SQL [-]
select Totales.Año,count(Totales.hijos) 
from 
(
Select fechanacimiento Año,count(Codigocabra) Hijos from Cabras 
where madre='ADY92023' and (LibroGenealogico='RD' or Librogenealogico='RN')
group by Año
UNION ALL
Select fechanacimiento Año,count(Codigomacho) Hijos from Machos
where madre='ADY92023' and (LibroGenealogico='RD' or Librogenealogico='RN')
group by Año
order by AÑO desc ) as Totales

group by Año

con los inner join si no tienes tabla de madres al hacer el inner join unes registros con la misma madre formando un registro solo con lo que no cuentas dos... uhmmm eso creo hoy estoy denso :D

waltergomez 29-05-2006 19:18:31

Estimo que tienes una tabla maestra de madres, por lo tanto un left join es mas apropiado, aqui tienes una referencia para leer.

http://www.programacion.com/tutorial.../#sql_internas


Salu2,


La franja horaria es GMT +2. Ahora son las 23:52:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi