
28/04/2008, 17:19
|
 | | | Fecha de Ingreso: junio-2003 Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 21 años, 9 meses Puntos: 2 | |
Re: Unir 2 consultas Haber creo que no me has entendido, imaginate a A y a B:
A se casa 5 veces con
- B
- C
- D
- E
- F
La consulta seria:
Código:
select if(a1.id != A, concat(a1.nombre,' ', a1.apellidos),
concat(a2.nombre,' ',a2.apellidos)) as conyuge,
if(a1.id != A, a1.id, a2.id) as id,
m.fecha as fecha_matrimonio
from matrimonios m, arbol a1, arbol a2
where a1. id=m.idhombre and a2.id =m.idmujer
and (m.idhombre in (B,C,D,E,F)
or m.idmujer in (B,C,D,E,F))
order by fecha;
Ahora si nos vamos a B y le aplicamos la consulta:
Código:
select if(a1.id != B, concat(a1.nombre,' ', a1.apellidos),
concat(a2.nombre,' ',a2.apellidos)) as conyuge,
if(a1.id != B, a1.id, a2.id) as id,
m.fecha as fecha_matrimonio
from matrimonios m, arbol a1, arbol a2
where a1. id=m.idhombre and a2.id =m.idmujer
and (m.idhombre in (A)
or m.idmujer in (A))
order by fecha;
El resultado es:
- A
- A
- A
- A
- A
De hay la necesidad de agrupar el "conyuge", entonces la consulta funciona bien, tanto para A como para B.
Pero es que ademas B estubo casado anteriormente con G y aqui da igual si agrupo o no, la consulta sobre B, me devuelve:
- G
- A
Pero si la hago sobre A:
- B
- C
- D
- E
- F
- G
y sobre G:
- B
- A
Como puedes ver, algo esta fallando.
bichomen
__________________ "Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332 |