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 | - |