Ver Mensaje Individual
  #4  
Antiguo 02-06-2003
obiwuan obiwuan is offline
Miembro
 
Registrado: may 2003
Posts: 488
Reputación: 24
obiwuan Va por buen camino
Creo que se os pasa algo por alto.

En cierta ocasión me plantearon algo similar, pero en un hospital, y la solución fue crear una tabla temporal. Esa tabla temporal se iba llenando poco a poco con los datos de las otras tablas, siempre era unión de tabla pacientes (en este caso alumnos) con el resto de las demás, una a una, ya que si una de ellas no tiene datos, la unión de todas ellas te viene a dar un conjunto vacío.

Algo así como

create table LoQueSea(campos tipos);

insert into LoQueSea select MismosCampos from alumnos a, OtraTabla O where a.id=o.idalumno

insert into LoQueSea select MismosCampos from alumnos a, OtraTablaX O where a.id=o.idalumno

y por ultimo sería un

select * from LoQueSea where SiHayCondicion order by SiHayOrdenación

Es un poco más complejo pero que seguro que evita errores de "este dato está en esta tabla pero no en esta otra". Tal como lo planteo, en caso de que una unión sea vacía, no afecta al resto de uniones.

PD: También se puede plantear usando la cláusula UNION en vez de la tabla temporal, pero en este último caso hay que ir con cuidado con la select planteada ya que es demasiado compleja. Mi solución te permite encontrar un posible fallo de una manera más fácil.
Responder Con Cita