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


0