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

Problema INNER JOIN con tres tablas

Estas en el tema de Problema INNER JOIN con tres tablas en el foro de Mysql en Foros del Web. Hola, buenas tardes. estoy haciendo la siguiente consulta para tres tablas detalle_solucion (id, id_fallas, id_solucion, solucion) falla(id_falla, falla) soluciones(id_sol, nombre). la tabla falla y soluciones ...
  #1 (permalink)  
Antiguo 01/11/2011, 11:45
 
Fecha de Ingreso: octubre-2011
Mensajes: 11
Antigüedad: 12 años, 6 meses
Puntos: 0
Problema INNER JOIN con tres tablas

Hola, buenas tardes. estoy haciendo la siguiente consulta para tres tablas
detalle_solucion (id, id_fallas, id_solucion, solucion)
falla(id_falla, falla)
soluciones(id_sol, nombre).

la tabla falla y soluciones estan relacionadas con clave foranea a la tabla detalle_solucion (id_fallas, id_solucion)

esta es la consulta.
SELECT * FROM (detalle_solucion
LEFT JOIN soluciones ON detalle_solucion.id_solucion=soluciones.id_sol)
LEFT JOIN falla ON detalle_solucion.id_fallas=falla.id_falla
WHERE id_fallas = %s ORDER BY id_solucion ASC"

el problema es que al mostrar la consulta en un tabla, se siguen viendo los numeros id de fallas y soluciones. no me muestra los nombres.

si pudieran ayudarme se los agradeceria mucho. saludos
  #2 (permalink)  
Antiguo 01/11/2011, 11:55
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problema INNER JOIN con tres tablas

Hola nanirm16:

Prueba con INNER JOIN en lugar de LEFT JOIN, y los paréntesis no son necesarios...

Código MySQL:
Ver original
  1. detalle_solucion DS
  2. INNER JOIN JOIN soluciones S ON DS.id_solucion = S.id_sol
  3. INNER JOIN falla F ON DS.id_fallas = F.id_falla
  4. ORDER BY id_solucion ASC

Quité la parte del WHERE pues creo que es sintaxis de PHP.

Trata en la medida de lo posible de NO utilizar SELECT *, sobre todo cuando utilices más de una tabla, pues estás duplicando campos. En lugar de eso lista sólo los campos que realmente necesitas y puedes utilizar alias a tus tablas para no escribir todo el nombre.

Código:
SELECT S.nombre, F.Falla FROM
Saludos
Leo
  #3 (permalink)  
Antiguo 01/11/2011, 12:26
 
Fecha de Ingreso: octubre-2011
Mensajes: 11
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Problema INNER JOIN con tres tablas

Hola leo, muchisimas gracias por tu pronta respuesta. ya voy a probar eso que me dices. una preguntita... en lo que me pusiste salen dos JOIN repetidos.. Va asi? o fue que te equivocaste?
  #4 (permalink)  
Antiguo 01/11/2011, 16:37
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 INNER JOIN con tres tablas

No son JOINs repetidos. Cada tabla adicional que se relaciona requiere un INNER JOIN...
En otras palabras:
- 2 Tablas: 1 INNER JOIN.
- 3 Tablas: 2 INNER JOIN.
...
- 8 Tablas: 7 INNER JOIN...

¿Se entiende la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 03/11/2011, 09:40
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problema INNER JOIN con tres tablas

Hola nanirm16:

Fue un error poner el JOIN repetido...

Código:
INNER JOIN JOIN soluciones S ON DS.id_solucion = S.id_sol
Saludos
Leo.

Etiquetas: join, select, tabla, tablas, tres
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 07:50.