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

Problema con consulta

Estas en el tema de Problema con consulta en el foro de Mysql en Foros del Web. la siguiente es la consulta @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT   `respuesta` . `respuesta` FROM   `respuesta` ,   `rel _ tiene` WHERE ...
  #1 (permalink)  
Antiguo 28/05/2013, 16:25
 
Fecha de Ingreso: noviembre-2011
Mensajes: 12
Antigüedad: 12 años, 5 meses
Puntos: 0
Problema con consulta

la siguiente es la consulta
Código MySQL:
Ver original
  1. SELECT  `respuesta`.`respuesta`
  2. FROM  `respuesta` ,  `rel_tiene`
  3. `rel_tiene`.`id_p` =  "3"
  4. )
  5. LIMIT 0 , 30

y en ves de devolverme los 2 elementos que coinciden con la condición me devuelve todos los registros de la tabla

Última edición por gnzsoloyo; 28/05/2013 a las 19:07
  #2 (permalink)  
Antiguo 28/05/2013, 19:11
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: Problema con consulta

Estás haciendo un producto cartesiano.

Los JOINs implícitos (la coma), son un desastre constante. Es una muy mala práctica que se perpetúa en los manuales, a persar de todas las advertencias que solemos dar.

La cosa es:
1) No uses joins implícitos. Tienden a generar errores por mala comprensión de cómo se realizan.
2) Usa INNER JOIN, indicando exactamente qué campo de la primera tabla se relaciona con qué campo la segunda.
Código MySQL:
Ver original
  1. SELECT  R.`respuesta`
  2. FROM  `respuesta` R INNER JOIN   `rel_tiene` RT ON R.id_p = RT.id_p
  3. WHERE RT.`id_p` =  "3"
  4. LIMIT 0 , 30
Eso, suponiendo que el campo relacional tenga el mismo nombre en ambas tablas... Como no nos has dicho nada de ellas, no lo sé.
__________________
¿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 30/05/2013, 12:57
 
Fecha de Ingreso: noviembre-2011
Mensajes: 12
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Problema con consulta

Que significa esto?

RT ON R.id_p = RT.id_p

la estructura de mi bd es la sgte

pregunta
ID_PREGUNTA
PREGUNTA

respuesta
ID_R
RESPUESTA

rel_tiene
ID_RELACION
ID_PREGUNTA
ID_R
  #4 (permalink)  
Antiguo 30/05/2013, 13:17
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: Problema con consulta

Alias....
Alias de las tablas para mejor lectura y seguimiento del código... :aburrido.

Necesitas leer más sobre SQL.
__________________
¿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: registros, select, tabla
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 19:01.