🌺

HIBISCO SQL

LEFT & RIGHT JOIN

LEFT JOIN devuelve todas las filas de la tabla izquierda y las coincidencias de la tabla derecha. Cuando no hay coincidencia, las columnas de la derecha aparecen como NULL. RIGHT JOIN hace lo mismo, pero conservando todas las filas de la tabla derecha.

Sintaxis

SELECT tabla1.columna, tabla2.columna
FROM tabla1
LEFT JOIN tabla2 ON tabla1.columna_comun = tabla2.columna_comun;

SELECT tabla1.columna, tabla2.columna
FROM tabla1
RIGHT JOIN tabla2 ON tabla1.columna_comun = tabla2.columna_comun;

Ejercicio

Pregunta: Muestre todos los planetas y, si existe, la nave que aterrizó en ellos.

Tabla de ejemplo

tabla nombre dist radio grav días años temp anillo nave planeta país año
planeta Mercurio 0,39 0,38 2,8 58,646 0,241 440 false - - - -
planeta Venus 0,72 0,95 8,9 -243,019 0,615 730 false - - - -
planeta Tierra 1,0 1,0 9,8 0,997 1,0 288 false - - - -
planeta Marte 1,52 0,53 3,7 1,026 1,88 186 false - - - -
planeta Júpiter 5,2 10,97 22,9 0,414 11,862 152 true - - - -
planeta Saturno 9,54 9,14 9,1 0,444 29,447 134 true - - - -
planeta Urano 19,19 3,98 7,8 -0,719 84,017 76 true - - - -
planeta Neptuno 30,07 3,86 11,0 0,671 164,791 53 true - - - -
aterrizaje - - - - - - - - Viking 1 Marte EEUU 1976
aterrizaje - - - - - - - - Beagle 2 Marte ESA 2003
aterrizaje - - - - - - - - Galileo Júpiter EEUU 2003
aterrizaje - - - - - - - - Mars 2 Lander Marte URRS 1971
aterrizaje - - - - - - - - Messenger Mercurio EEUU 2015
aterrizaje - - - - - - - - Pioneer Venus EEUU 1978
aterrizaje - - - - - - - - Venera 3 Venus URRS 1966

Solución

SELECT nave, nombre, dist, año
FROM planeta LEFT JOIN aterrizaje
ON nombre = planeta;

Resultado esperado

estudiante curso
Messenger Mercurio 0,39 2015
Venera 3 Venus 0,72 1966
Pioneer Venus 0,72 1978
Mars 2 Lander Marte 1,52 1971
Viking 1 Marte 1,52 1976
Beagle 2 Marte 1,52 2003
Galileo Júpiter 5,2 2003
- Tierra 1,0 -
- Saturno 9,54 -
- Urano 19,19 -
- Neptuno 30,07 -