Oracle - Consulta entre tablas con resultados nulos

 
Vista:

Consulta entre tablas con resultados nulos

Publicado por Tomás (5 intervenciones) el 21/04/2005 15:46:43
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.

Gracias por adelantado.

Tomás
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta entre tablas con resultados nulos

Publicado por Leonardo (93 intervenciones) el 21/04/2005 16:36:42
Es un trabalenguas tenaz pero creo que podrias utilizar la sentencia UNION:

select....
from ...
where ...
UNION
select ...
from ....
where ....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta entre tablas con resultados nulos

Publicado por Tomás (5 intervenciones) el 21/04/2005 16:40:57
Hola, Leonardo.

El problema es que no quiero unir los resultados. Lo que quiero es que sólo muestre los resultados de una de las 2 tablas si al consultar la primera no se obtienen resultados.

No sé si sería necesario usar 'decode'. La verdad es que tampoco sé muy bien la potencia de esta función.

Muchas gracias,

Tomás.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta entre tablas con resultados nulos

Publicado por Leonardo (93 intervenciones) el 21/04/2005 16:59:53
Ejemplo:
select decode(
(select count(*) from dual where trunc(sysdate)='29-apr-2005'), 0
, (select sysdate+1 from dual), (select sysdate+2 from dual))
from dual;

El ejemplo dice que si hoy fuera 29 el resultado es 30 en caso contrario sera hoy mas dos dias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta entre tablas con resultados nulos

Publicado por Tomás (5 intervenciones) el 21/04/2005 17:45:41
Se parece mucho a lo que yo quiero.

El problema es que cuando aplico tu solución a mi problema la cosa queda:

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'))

da un error ORA-01427 y dice que la subconsulta de una sola fila devuelve más de una fila.

¿Se te ocurre qué puedo cambiar, si es que puedo cambiar algo?

Muchas gracias.

Tomás
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta entre tablas con resultados nulos

Publicado por alejandro  (1 intervención) el 20/06/2010 22:49:55
le falta colocar mas relaciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar