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

Condicion WHERE me da problemas.

Estas en el tema de Condicion WHERE me da problemas. en el foro de Bases de Datos General en Foros del Web. Buenas tardes, tengo un problema al intentar sacar el nombre de un campo numérico almacenado en otra tabla, es decir, en una tabla tengo 2 ...
  #1 (permalink)  
Antiguo 06/07/2015, 13:50
 
Fecha de Ingreso: mayo-2015
Mensajes: 7
Antigüedad: 8 años, 11 meses
Puntos: 0
Pregunta Condicion WHERE me da problemas.

Buenas tardes, tengo un problema al intentar sacar el nombre de un campo numérico almacenado en otra tabla, es decir, en una tabla tengo 2 tuplas que guardan un número que es el identificador para buscar el nombre en la otra tabla. Las tuplas se llaman codigo_linea_inv1 y codigo_linea_inv1 estás están en la tabla jurados_def y el nombre que quiero extraer está en la tabla lineainvestigacion que contiene codigo_linea_investigacion y nombre_linea_inv, dependiendo del número que esté guardado en las tuplas de jurados_def me tiene que extraer el nombre de la línea de investigación a la que corresponde el número.

Hasta ahora lo he intentado de la siguiente manera:

Código MySQL:
Ver original
  1. SELECT p.nombre, p.apellido, p.cedula_identidad, j.cedula_jurado, j.procedencia,
  2. l.nombre_linea_inv FROM jurados_def j, persona p, lineainvestigacion l
  3. WHERE j.cedula_jurado='13555555' AND j.cedula_jurado=p.cedula_identidad
  4. AND l.codigo_linea_investigacion=j.codigo_linea_inv1
  5. AND l.codigo_linea_investigacion=j.codigo_linea_inv2;

Y me dice que no tengo registros pero ya corroboré que sí hay registros y sus respectivas líneas de investigación están bien. Pero si le quito una de las tuplas de las líneas de investigación funciona bien, me extrae los registros como deseo:

Código MySQL:
Ver original
  1. SELECT p.nombre, p.apellido, p.cedula_identidad, j.cedula_jurado, j.procedencia,
  2. l.nombre_linea_inv FROM jurados_def j, persona p, lineainvestigacion l
  3. WHERE j.cedula_jurado='13555555' AND j.cedula_jurado=p.cedula_identidad
  4. AND l.codigo_linea_investigacion=j.codigo_linea_inv1;

nombre apellido cedula_identidad cedula_jurado procedencia nombre_linea_inv
LISI YZARRA 13555555 13555555 facultad de ingeniería Geológica

Última edición por gnzsoloyo; 06/07/2015 a las 14:05
  #2 (permalink)  
Antiguo 06/07/2015, 17: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: 16 años, 4 meses
Puntos: 2658
Respuesta: Condicion WHERE me da problemas.

Bueno, asegurémonos de un detalle.
Posteanos lo que devuelve esto:
Código SQL:
Ver original
  1. SELECT
  2.     p.nombre,
  3.     p.apellido,
  4.     p.cedula_identidad,
  5.     j.cedula_jurado,
  6.     j.procedencia,
  7.     l.nombre_linea_inv,
  8.     j.codigo_linea_inv1,
  9.     l.codigo_linea_investigacion,
  10.     j.codigo_linea_inv2
  11. FROM
  12.     jurados_def j,
  13.     persona p,
  14.     lineainvestigacion l
  15. WHERE
  16.     j.cedula_jurado = '13555555'
  17.         AND j.cedula_jurado = p.cedula_identidad
  18.         AND l.codigo_linea_investigacion = j.codigo_linea_inv1;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/07/2015, 06:58
 
Fecha de Ingreso: mayo-2015
Mensajes: 7
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Condicion WHERE me da problemas.

Esto es lo que me devuelve

nombre |apellido |cedula_identidad |cedula_jurado |procedencia |nombre_linea_inv |codigo_linea_inv1 |codigo_linea_investigacion |codigo_linea_inv2
LISI |YZARRA |13555555 |13555555 |facultad de ingeniería |Geológica |9 |9 |15
  #4 (permalink)  
Antiguo 09/07/2015, 16:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Condicion WHERE me da problemas.

Bueno, el error, tal como lo imaginé, era de datos...

Mira, tu tienes estos valores en ese registro:
Cita:
nombre: LISI
apellido: YZARRA
cedula_identidad: 13555555
cedula_jurado: 13555555
procedencia: facultad de ingeniería
nombre_linea_inv: Geológica
codigo_linea_inv1: 9
codigo_linea_investigacion: 9
codigo_linea_inv2: 15
Ahora bien, sobre estos tres últimos datos, lo que pides en tu consulta es esto (copio TU query):
Código SQL:
Ver original
  1. SELECT p.nombre, p.apellido, p.cedula_identidad, j.cedula_jurado, j.procedencia,
  2. l.nombre_linea_inv FROM jurados_def j, persona p, lineainvestigacion l
  3. WHERE j.cedula_jurado='13555555' AND j.cedula_jurado=p.cedula_identidad
  4. AND l.codigo_linea_investigacion=j.codigo_linea_inv1
  5. AND l.codigo_linea_investigacion=j.codigo_linea_inv2;
Como puedes ver al final, pides que el codigo de linea de investigación sea el mismo de "codigo_linea_inv1" y de "codigo_linea_inv2", pero en el caso de ese numero de "cedula_jurado", eso no se da.
"codigo_linea_inv1" es igual a 9
"codigo_linea_inv2 es igual a 15.

Es imposible que te devuelva datos en esa condición. Sólo si quitas la segunda te puede devolver registros...

¿Se entiende?

Como siempre digo, el SQL no comete errores. Los errores, cuando no son de sintaxis, son de datos, los cuales no son los que el programador supone que son...
__________________
¿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: Ninguno
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 08:01.