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

INNER JOIN, 3 tablas, muchos problemas

Estas en el tema de INNER JOIN, 3 tablas, muchos problemas en el foro de Mysql en Foros del Web. Buenas! Hace un buen rato que estoy tirando querys a la consola y no logro resolver el tema, así que acá se viene la consulta: ...
  #1 (permalink)  
Antiguo 19/01/2011, 12:31
 
Fecha de Ingreso: marzo-2006
Mensajes: 12
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta INNER JOIN, 3 tablas, muchos problemas

Buenas!

Hace un buen rato que estoy tirando querys a la consola y no logro resolver el tema, así que acá se viene la consulta:

Resulta que tengo 3 tablas: vuelos, destinos y pilotos

En cada registro de la tabla vuelos, tengo los campos id, piloto1, piloto2, origen, destino entre otros campos que no vienen al caso. Teniendo en cuenta que origen y destino estan en la tabla destinos.

Bien, mi idea es hacer una sola query para recuperar por cada registro de vuelos, los nombres de ambos pilotos y los nombres de origen y destino. Realmente no se como hacerlo luego de haber leido manuales y tutoriales de MySQL.


Lo mas cerca que estoy del resultado que quero es algo así:

Código SQL:
Ver original
  1. SELECT
  2. `vuelos`.`id`,
  3. `vuelos`.`status`,
  4. `vuelos`.`piloto1`,
  5. `vuelos`.`piloto2`,
  6. `vuelos`.`origen`,
  7. `vuelos`.`destino`,
  8. `destinos`.`label`,
  9. `pilotos`.`lastname`
  10. FROM `vuelos`
  11. STRAIGHT_JOIN `destinos` ON `destinos`.`id` = `vuelos`.`origen`
  12. INNER JOIN `pilotos` ON `pilotos`.`id` = `vuelos`.`piloto1`
  13. ORDER BY `vuelos`.`start_time` ASC;


Mi problema pasa porque no sé como recuperar dos registros de cada tabla destinos y pilotos por cada registro de vuelos.

Desde ya muchas gracias!

Última edición por maxilc; 19/01/2011 a las 13:03
  #2 (permalink)  
Antiguo 20/01/2011, 09:06
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: INNER JOIN, 3 tablas, muchos problemas

Hola maxilc, puedes duplicar tu tabla de pilotos con un alias diferente, serías más u menos así:

supongo que tu tabla pilotos tiene más o menos la siguiente información:

Código:
idPiloto|nombre
--------------------
1|UNO
2|DOS
3|TRES
Ahora bien, supongo que tu tabla vuelos es más o menos como sigue:

Código:
idVuelo|piloto1|piloto2
-----------------------------
100|1|2
200|1|3
300|2|3
Para obtener los nombres de los pilotos en cada vuelo puedes hacer lo siguiente:

Código MySQL:
Ver original
  1. select v.idVuelo, p1.nombre, p2.nombre
  2. from vuelos v
  3. inner join pilotos p1 on p1.idPiloto = v.piloto1
  4. inner join pilotos p2 on p2.idPiloto = v.piloto2

Con esto obtienes el siguiente resultado:

Código:
idVuelo|nombre_Piloto_1|nombre_Piloto_2
------------------------------------------------------------
100|UNO|DOS
200|UNO|TRES
300|DOS|TRES
Lo mismo tendrías que aplicar para el origen y destino. Espero que esto sea más o menos lo que necesitas.

Saludos
Leo.
  #3 (permalink)  
Antiguo 20/01/2011, 09:22
 
Fecha de Ingreso: marzo-2006
Mensajes: 12
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: INNER JOIN, 3 tablas, muchos problemas

Excelente Leo, no conocia esto de los alias, funcionó a la perfección!

Muchísimas gracias!

Etiquetas: join, muchos, tablas
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:20.