Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/04/2014, 16:46
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Reparar consulta

Bueno, en realidad es bastante simple en apariencia: Estás invocando tres tablas, pero sólo relacionas dos... Ergo, con la tercera se produce el producto cartesiano.
El JOIN implícito (la coma) sólo funciona como INNER JOIN cuando los campos relacionados entre dos tablas tienen el mismo nombre, que no es el caso.
Cuando son distintos funciona como producto cartesiano.
Código MySQL:
Ver original
  1. SELECT C.id, C.nombre, H.name herramienta, O.obligatorio
  2. FROM componentes C
  3.     INNER JOIN herramientas H ON C.herramienta = H.id
  4.     INNER JOIN objetos O ON C.objeto = O.codigo
  5. GROUP BY song, H.nombre
  6. ORDER BY song, H.nombre
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)