Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problemas con una select, es urgente!!! para este lunes como muy tarde por favor

Estas en el tema de Problemas con una select, es urgente!!! para este lunes como muy tarde por favor en el foro de Mysql en Foros del Web. Buenas noches, El lunes tengo que entregar el proyecto de una asignatura y me esta dando problemas una select que tengo. En el MySQL la ...
  #1 (permalink)  
Antiguo 12/06/2010, 14:45
 
Fecha de Ingreso: marzo-2009
Mensajes: 75
Antigüedad: 15 años, 8 meses
Puntos: 0
Exclamación Problemas con una select, es urgente!!! para este lunes como muy tarde por favor

Buenas noches,

El lunes tengo que entregar el proyecto de una asignatura y me esta dando problemas una select que tengo.
En el MySQL la he ejecutado y me dice que es correcta, pero luego al ponerla en el codigo de JAVA, con un programa NetBeans, me da error, me dice que no esta bien construida.

bueno pongo aqui la select por si alguien me puede ayudar:

Código HTML:
PreparedStatement pstm = conn.prepareStatement(
                    " select rol.desrol from rol, asignarrolfun, funcionalidad where rol.codrol = " +
                    " asignarrolfun.codrol and  asignarrolfun.codfun = " +
                    " funcionalidad.codfun in " +
                    " (select funcionalidad.codfun from funcionalidad where desfun = " +
                    " '" + desfun + "') ");
Muchas gracias por todo, y lo dicho, es urgente, porque tengo que entregar el proyecto el lunes, si alguien me puede ayudar se lo agradeceria
  #2 (permalink)  
Antiguo 12/06/2010, 15:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problemas con una select, es urgente!!! para este lunes como muy tarde por

Esta sería la sentencia que estás usando, una vez eliminada toda la "basura" que agrega el código de programación, el cual no debe ponerse en este foro (normas del foro), entre otras cosas porque hace invisible los errores de sintaxis y lo que las variables agregan...:

Código MySQL:
Ver original
  1. SELECT rol.desrol
  2. FROM rol, asignarrolfun, funcionalidad
  3. WHERE   rol.codrol = asignarrolfun.codrol  AND asignarrolfun.codfun = funcionalidad.codfun
  4.   IN (SELECT funcionalidad.codfun FROM funcionalidad WHERE desfun = 'algo');

Hay al menos un problema de sintaxis: la subconsulta no tiene ningún dato con la cual está siendo comparada, es decir, IN(sunconsulta) necesita una columna contra qué compararla, cosa que no estás haciendo. No puede ser el funcionalidad.codfun escrito, porque eso pertenece al par asignarrolfun.codfun = funcionalidad.codfun.
Otro problema, pero de optimización, es que todos los pares comparativos que muestran la relación entre tablas deben ir en el from con su correspondiente JOIN y no en el WHERE...
La cosa sería, entonces:
Código MySQL:
Ver original
  1.     R.desrol
  2.     rol R INNER JOIN asignarrolfun A ON R.codrol = A.codrol  
  3.     INNER JOIN funcionalidad F ON A.codfun = F.codfun
  4.     F.codfun IN (SELECT funcionalidad.codfun FROM funcionalidad WHERE desfun = 'algo');
Otra observación que surge es que es IN es absolutamente innecesario, porque el objetivo es buscar un dato en una tabla que ya estás invocando en la consulta principal, y por tanto ya accedes...
Lo más correcto sería, entonces:
Código MySQL:
Ver original
  1.     R.desrol
  2.     rol R INNER JOIN asignarrolfun A ON R.codrol = A.codrol  
  3.     INNER JOIN funcionalidad F ON A.codfun = F.codfun
  4.     F.codfun= 'algo';
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: favor, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:05.