Consulta entre tablas con resultados nulos

tsanchezruiz
25 de Abril del 2005
Hola a todos.

Tengo una duda sobre un tipo de cosultas que quiero realizar, y no sé si se puede hacer con una consulta o es necesario hacer procesos pl/sql.

Parto de 3 tablas. La clave principal de una de ellas es foreign key en las otras 2.

Por otro lado tengo un valor de cada una de las otras tablas. Lo que yo quiero es una consulta que tome una de las 2 claves que tengo y busque todos los resultados de la tabla que es común a las 2 primeras, y que en caso de no encontrar resultados, haga la misma operación para la otra tabla.

¿Se debe usar decode o algo similar?

En otro foro me propusieron algo, que aplicado a mi código se transforma en:

select direccion from tabla_1 where pk_tabla_1 in Decode ((select fk_tabla_1 from tabla_2 where fk_param_2 = '123'), null, (select fk_tabla_1 from tabla_3 where fk_param_3 = '983'))

el problema es que falla en la query:

select fk_tabla_1 from tabla_2 where fk_param_2 = '123',

pues la sentencia espera como resultado un único registro y en realidad se devuelve una serie de registros. Pero es así como quiero que funciones, es decir, quiero que si esa sentencia no devuelve ningún registro, que se ejecute la otra, es decir,

select fk_tabla_1 from tabla_3 where fk_param_3 = '983'.

¿Teneis alguna idea de cómo solucionarlo?



Gracias por adelantado.

Tomás

Rodolfo Reyes
25 de Abril del 2005
Prueba utilizar un UNION.

select ...
from tabla
UNION
select ...
from tabla2
UNION
select ...

Si con esto no te funciona. Utiliza cursores para hacer un proceso para depurar los datos.

trazom
25 de Abril del 2005
Tienes que hacerlo con PL/SQL

Saludos.