Ver Mensaje Individual
  #20 (permalink)  
Antiguo 28/04/2008, 17:19
Avatar de bichomen
bichomen
 
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 11 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