Oracle - problemas con left join en oracle 8i

 
Vista:

problemas con left join en oracle 8i

Publicado por juanlu (5 intervenciones) el 29/12/2006 12:33:25
Hola buenas, he estado desarrollando una aplicacion en JSP contra una base de datos oracle XE, el problemas es que ahora cuando pase a produccion funciona contra una bd Oracle 8i y las sentencias no me funciona.

La consulta en XE es esta:
SELECT DISTINCT DE_ENTIDAD.EntidadID, DE_ENTIDAD.NOMBRE, MUNICIPIOS.NOMBRE as muni FROM DE_ENTIDAD LEFT JOIN DE_ENTIDAD_SECTORES on DE_ENTIDAD_SECTORES.EntidadID = DE_ENTIDAD.EntidadID LEFT JOIN DE_SECTORES on DE_ENTIDAD_SECTORES.ID_SECTORES = DE_SECTORES.ID_SECTORES LEFT join DE_REFERENCIA on DE_REFERENCIA.Id_Referencia = DE_ENTIDAD.Id_Referencia LEFT join DE_ENTIDAD_ACTIVIDAD on DE_ENTIDAD_ACTIVIDAD.EntidadID = DE_ENTIDAD.EntidadID LEFT JOIN MUNICIPIOS ON MUNICIPIOS.MUNICIPIO = DE_ENTIDAD.MUNICIPIO AND MUNICIPIOS.PROVINCIA = DE_ENTIDAD.PROVINCIA WHERE DE_ENTIDAD.PROVINCIA ='41' and DE_ENTIDAD.Id_Referencia = '3' ORDER BY NOMBRE

He visto por internet que el JOIN LEFT no funciona en oracle 8i y usa el (+)
Hice una traducción a 8i con una sentencia así:

SELECT DISTINCT DE_ENTIDAD.EntidadID, DE_ENTIDAD.NOMBRE, MUNICIPIOS.NOMBRE as muni
FROM DE_ENTIDAD, DE_ENTIDAD_SECTORES, DE_SECTORES, DE_REFERENCIA, DE_ENTIDAD_ACTIVIDAD, MUNICIPIOS, PROVINCIAS
WHERE
DE_ENTIDAD_SECTORES.EntidadID(+) = DE_ENTIDAD.EntidadID and
DE_ENTIDAD_SECTORES.ID_SECTORES(+) = DE_SECTORES.ID_SECTORES and
DE_REFERENCIA.Id_Referencia(+) = DE_ENTIDAD.Id_Referencia AND
DE_ENTIDAD_ACTIVIDAD.EntidadID(+) = DE_ENTIDAD.EntidadID AND
MUNICIPIOS.MUNICIPIO(+) = DE_ENTIDAD.MUNICIPIO AND MUNICIPIOS.PROVINCIA(+) = DE_ENTIDAD.PROVINCIA
and DE_ENTIDAD.PROVINCIA ='41' and DE_ENTIDAD.Id_Referencia = '3'
ORDER BY NOMBRE;

Pero tambien da error:
ORA-01417: una tabla sólo puede estar unida externamente como máximo a otra
tabla.

Entonce ya me he perdido y no se como salir.
Alguien me puede echar un mano
Gracias
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:problemas con left join en oracle 8i

Publicado por Rodolfo Reyes (445 intervenciones) el 29/12/2006 17:02:58
ORA-01417 a table may be outer joined to at most one other table

Cause: a.b (+) = b.b and a.c (+) = c.c is not allowed.

Action: Check that this is really what you want, then join b and c first in a view.

Se me ocurren dos cosas:

1) Crear vistas para romper con el problema.

2) Tambien puedes hacer querys en el FROM

ejemplo:

select a.campo1, b.campo2
from tabla a, (select campo2 from tabla2 where ...) b
where a.campo1 = b.campo2
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:problemas con left join en oracle 8i

Publicado por ANDRES (1 intervención) el 12/03/2008 14:53:53
MUY MALO TU EJEMPLO
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:problemas con left join en oracle 8i

Publicado por David (1 intervención) el 08/11/2011 13:37:22
Pues anda que tu comentario. Para eso mejor no hablar, y encima 2 años después. Yo también voy tarde, pero es que menuda aportación la tuya.
Por cierto el ejemplo es bueno, si lo entiendes.

Te lo explico.

select tabla1.campo1, tabla1.campo2
from tabla1, (select campo2 from tabla2, tabla3 where tabla2.id = tabal3.id (+)) TEMPORAL
where tabla1.id = TEMPORAL.id (+)
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