Sentencia INNER JOIN en ORACLE desde JSP

A tod@s!!
Tengo un problemilla con una SELECT. Al intentar acceder a una BD Oracle desde JSP con la sentencia que te pongo a continuación me da un error (algo parecido a "Sentencia no acabada correctamente ")
SELECT DISTINCT harditem.class, harditem.code, harditem.itemdata
FROM harditem INNER JOIN Categorias ON (harditem.class = Categorias.class) and (harditem.code = Categorias.code)} WHERE Categorias.type<>1 and harditem.grupo<>3;
No se si el problema viene de JSP o si es que Oracle no admite el INNER JOIN. He probado la sentencia directamente en Oracle y también falla porlo que supongo que la estructura del INNER JOIN no es la que estoy usando.
Respuesta
1
Puedes crear esta sentencia que es igual
SELECT DISTINCT harditem.class, harditem.code, harditem.itemdata
FROM harditem, Categorias where harditem.class = Categorias.class and harditem.code = Categorias.code and Categorias.type<>1 and harditem.grupo<>3;
Si quieres hacer left join o right join tienes que utilizar un (+) en la condición que hace el join. En el manual de usuario de oracle encontraras ejemplos.

1 respuesta más de otro experto

Respuesta
1
la sentencia inner join como tal no existe en oracle. tu sentencia correcta sería así
SELECT DISTINCT harditem.class, harditem.code, harditem.itemdata
FROM harditem ,categorias where (harditem.class = Categorias.class) and (harditem.code = Categorias.code)and( Categorias.type<>1) and (harditem.grupo<>3);
si fuera outer join :
SELECT DISTINCT harditem.class, harditem.code, harditem.itemdata
FROM harditem ,categorias where (harditem.class(+) = Categorias.class) and (harditem.code = Categorias.code)and( Categorias.type<>1) and (harditem.grupo<>3);
Oracle por defecto asigna la clausula inner join, realmente te recomendaría la utilización de vistas.
Muchísimas gracias! Suponía que el problema venía de Oracle, pero no estaba seguro. Me has ahorrado unos cuantos quebraderos de cabeza. Posiblemente pruebe con vistas. GRacias or todo. Agur!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas