MySQL - consulta dos foraneas en la misma tabla con WHERE

   
Vista:

consulta dos foraneas en la misma tabla con WHERE

Publicado por Patricia (3 intervenciones) el 10/04/2016 23:50:17
Hola,
tengo dos tablas: aeropuerto y vuelo. En VUELO tengo dos foraneas que son: aeropuertosalida y aeropuertollegada. VUELO ESTA RELACIONADO CON AEROPUERTO.

Lo que necesito es mostrar los nombres de AEROPUERTOSALIDA y AEROPUERTOLLEGADA pero con un WHERE y no con join.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

consulta dos foraneas en la misma tabla con WHERE

Publicado por Yamil Bracho (16 intervenciones) el 11/04/2016 00:35:31
Usa un subquery. Pir ejemplo
Select id,
(select nombre from aeropuerto where idaerpuerto = vuelo.aeropuertosalida) as aerpoertosalida
from vuelo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

muchas gracias

Publicado por Patricia (3 intervenciones) el 11/04/2016 03:05:42
Muchas gracias, que gran ayuda! :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

consulta dos foraneas en la misma tabla con WHERE

Publicado por Gonzalo (103 intervenciones) el 11/04/2016 13:55:03
Lo que necesito es mostrar los nombres de AEROPUERTOSALIDA y AEROPUERTOLLEGADA pero con un WHERE y no con join.
Eso es ineficiente, y de pésima performance, además de no ser la técnica funcionalmente correcta.

La solución es de manual:

1
2
3
4
5
Select id, a1.nombre AeroPuertoSalida, a2.nombre AeroPuertoLlegada
from vuelo v
     inner join aeropuerto a1 on v.aeropuertosalida = a1.idaerpuerto
     inner join aeropuerto a2 on v.aeropuertollegada = a2.idaerpuerto
from vuelo

Ahora bien, sólo es posible que necesites usar subqueries en el SELECT como ejercicio, pero en la vida real ese tipo de consultas NO se recomienda.
De hecho, los profesores de BBDD suelen reprobar los trabajos prácticos que incluyen esa solución.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar