OUTER JOIN
FULL OUTER JOIN devuelve todas las filas de ambas tablas. Cuando una fila no tiene coincidencia en la otra tabla, las columnas faltantes se muestran como NULL.
Sintaxis
SELECT tabla1.columna, tabla2.columna FROM tabla1 FULL OUTER JOIN tabla2 ON tabla1.columna_comun = tabla2.columna_comun;
Ejercicio
Pregunta: Muestre todos los satelites y todos los aterrizajes, existan o no coincidencias entre sus planetas.
Tabla de ejemplo
| tabla | nombre | planeta | descubridor | año | nave | país |
|---|---|---|---|---|---|---|
| satelite | Calisto | Júpiter | Galileo Galilei | 1610 | - | - |
| satelite | Europa | Júpiter | Galileo Galilei | 1610 | - | - |
| satelite | Ganímedes | Júpiter | Galileo Galilei | 1610 | - | - |
| satelite | Ío | Júpiter | Galileo Galilei | 1610 | - | - |
| satelite | Luna | Tierra | - | - | - | - |
| satelite | Titán | Saturno | Christiaan Huygens | 1655 | - | - |
| satelite | Tritón | Neptuno | William Lassell | 1846 | - | - |
| aterrizaje | - | Marte | - | 1976 | Viking 1 | EEUU |
| aterrizaje | - | Marte | - | 2003 | Beagle 2 | ESA |
| aterrizaje | - | Júpiter | - | 2003 | Galileo | EEUU |
| aterrizaje | - | Marte | - | 1971 | Mars 2 Lander | URRS |
| aterrizaje | - | Mercurio | - | 2015 | Messenger | EEUU |
| aterrizaje | - | Venus | - | 1978 | Pioneer | EEUU |
| aterrizaje | - | Venus | - | 1966 | Venera 3 | URRS |
Solución
SELECT planeta, nave, nombre AS satelite FROM satelite S FULL OUTER JOIN Aterrizaje A ON S.planeta = A.planeta
Resultado esperado
| nombre | certificado | |
|---|---|---|
| Tierra | - | Luna |
| Júpiter | Galileo | Ganímedes |
| Júpiter | Galileo | Calipso |
| Júpiter | Galileo | Europa |
| Júpiter | Galileo | Ío |
| Saturno | - | Titán |
| Neptuno | - | Tritón |
| Mercurio | Mesenger | - |
| Venus | Venera 3 | - |
| Venus | Pioneer | - |
| Marte | Mars 2 lander | - |
| Marte | Viking 1 | - |
| Marte | Beagle 2 | - |