SQL - Join en mysql con subtipos de un atributo

 
Vista:
Imágen de perfil de Miguel
Val: 6
Ha aumentado su posición en 7 puestos en SQL (en relación al último mes)
Gráfica de SQL

Join en mysql con subtipos de un atributo

Publicado por Miguel (2 intervenciones) el 15/07/2020 13:59:32
Buenas amigos, quería ver si alguien podía ofrecer un ejemplo de como hacer un join a tablas que comparten una estructura como esta:

AEROPUERTOS (id_aerop, nom)
RUTAS (nro_ruta, id_aerop_origen, id_aerop_destino)

En RUTAS tenemos id_aerop_origen e id_aerop_destino que hacen referencia a los mismos valores ingresados en AEROPUERTOS (id_aerop).

No sé si es correcto decir en sql que id_aerop_origen e id_aerop_destino son subtipo de id_aerop.

Gracias por cualquier aporte.
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
Imágen de perfil de joel
Val: 73
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Join en mysql con subtipos de un atributo

Publicado por joel (26 intervenciones) el 15/07/2020 15:04:50
Hola Miguel, la manera es sencilla... es hacer dos joins... algo así:

1
2
3
SELECT * FROM RUTAS as R
LEFT JOIN AEROPUERTOS as AO ON AO.id_aerop=R.id_aerop_origen
LEFT JOIN AEROPUERTOS as AD ON AD.id_aerop=R.id_aerop_destino

Esto te devuelve un registro así:
1
2
3
4
5
+----------+-----------------+------------------+----------+-----------+----------+----------+
| nro_ruta | id_aerop_origen | id_aerop_destino | id_aerop | nom       | id_aerop | nom      |
+----------+-----------------+------------------+----------+-----------+----------+----------+
|        1 |               1 |                2 |        1 | barcelona |        2 | valencia |
+----------+-----------------+------------------+----------+-----------+----------+----------+


Es esto lo que buscas?
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
Imágen de perfil de Miguel
Val: 6
Ha aumentado su posición en 7 puestos en SQL (en relación al último mes)
Gráfica de SQL

Join en mysql con subtipos de un atributo

Publicado por Miguel (2 intervenciones) el 15/07/2020 15:30:32
Gracias por la respuesta Joel.

Sí, por un lado quería corroborar el join que estaba haciendo, sin embargo me ocurre que cuando quiero listar los aeropuertos que NO están en ninguna ruta de origen o destino, mi consulta me devuelve null. No me doy cuenta de qué es lo que estoy haciendo mal.

1
2
3
4
SELECT A.ID_AEROP FROM AEROPUERTOS A
WHERE NOT EXISTS(	SELECT DISTINCT AORIG.ID_AEROP FROM AEROPUERTOS AORIG
					JOIN RUTAS AS R ON AORIG.ID_AEROP=R.ID_AEROP_ORIGEN
					JOIN AEROPUERTOS AS ADEST ON ADEST.ID_AEROP=R.ID_AEROP_DESTINO);

La subconsulta me devuelve los valores que quiero, pero cuando la uso junto con not exists me devuelve null y no me trae los aeropuertos que no están en ID_AEROP_ORIGEN ni ID_AEROP_DESTINO de la tabla RUTAS.

1
2
3
SELECT DISTINCT AORIG.ID_AEROP FROM AEROPUERTOS AORIG
					JOIN RUTAS AS R ON AORIG.ID_AEROP=R.ID_AEROP_ORIGEN
					JOIN AEROPUERTOS AS ADEST ON ADEST.ID_AEROP=R.ID_AEROP_DESTINO;

A qué se puede deber eso?
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