Subconsulta con semiuniones y antiuniones

Combinación de datos en SQL

Maham Faisal Khan

Senior Content Developer, DataCamp

Llamada a todas las uniones

Diagrama de INNER JOIN en el campo id

Diagrama que muestra dos tablas: left_table y right_table. El resultado de unir las dos consultas se muestra a la derecha, devolviendo solo los registros que coinciden en la columna id para ambas tablas.

Combinación de datos en SQL

Uniones aditivas

SELECT *
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
Combinación de datos en SQL

Uniones aditivas

Diagrama explicativo de una unión aditiva. En la parte izquierda se muestran dos tablas, left_table y right_table. A la derecha se muestra el resultado de una INNER JOIN utilizando una columna id en las dos tablas. Los campos con nombres diferentes se añaden con sus nombres originales. Dado que el campo de fecha aparece en ambas tablas, se añade dos veces.

Combinación de datos en SQL

Semiunión

Una semiunión elige registros de la primera tabla cuando se cumple una condición en la segunda tabla.

Diagrama que muestra dos tablas, left_table y right_table, que se usarán para demostrar una semi join. left_table tiene dos columnas, id y col1. right_table solo tiene una columna, col2.

Combinación de datos en SQL

Semiunión

Diagrama que muestra dos tablas, left_table y right_table, que se utilizan para mostrar una semiunión. col2 se utilizará para filtrar col1. Los registros en left_table donde col1 no encuentra coincidencia en col2 se han atenuado.

Combinación de datos en SQL

Semiunión

Diagrama que muestra dos tablas, left_table y right_table. El resultado de una semiunión en ambas tablas se muestra a la derecha. Solo se han devuelto los registros de left_table en los que col1 encuentra una coincidencia en col2. Estos corresponden a los ids 2 y 3.

Combinación de datos en SQL

Empezando nuestra semiunión

SELECT country, continent, president
FROM presidents;
| country  | continent     | president               |
| -------- | ------------- | ----------------------- |
| Egypt    | Africa        | Abdel Fattah el-Sisi    |
| Portugal | Europe        | Marcelo Rebelo de Sousa | 
| USA      | North America | Joe Biden               |
| Uruguay  | South America | Luis Lacalle Pou        |
| Pakistan | Asia          | Asif Ali Zardari        |
| Chile    | South America | Gabriel Boric           |
| India    | Asia          | Droupadi Murmu          |
Combinación de datos en SQL

Sobre la base de nuestra semiunión

SELECT country
FROM states
WHERE indep_year < 1800;
|----------|
| country  |
|----------|
| Portugal |
| Spain    |
|----------|
Combinación de datos en SQL

Terminar la semiunión (introducción a las subconsultas)

SELECT president, country, continent
FROM presidents
WHERE country IN
    (SELECT country
     FROM states
     WHERE indep_year < 1800);
|-------------------------|-----------|-------------|
| president               | country   | continent   |
|-------------------------|-----------|-------------|
| Marcelo Rebelo de Sousa | Portugal  | Europe      |
|-------------------------|-----------|-------------|
Combinación de datos en SQL

Antiunión

Diagrama que muestra dos tablas, left_table y right_table, que se utilizan para mostrar una antiunión. col2 se utilizará para filtrar col1. Los registros en left_table donde col1 no encuentra coincidencia en col2 se han atenuado NOT.

Combinación de datos en SQL

Antiunión

Diagrama que muestra dos tablas, left_table y right_table. El resultado de una antiunión en ambas tablas se muestra a la derecha. Solo se devuelven los registros de left_table en los que col1 no encuentra una coincidencia en col2. Estos corresponden a los ids 1 y 4.

Combinación de datos en SQL

Antiunión con los presidentes

SELECT country, president
FROM presidents
WHERE continent LIKE '%America' 
    AND country NOT IN
        (SELECT country
         FROM states
         WHERE indep_year < 1800);
| country  |  president       |
| -------- | ---------------- | 
| Uruguay  | Luis Lacalle Pou |
| Chile    | Gabriel Boric    |
Combinación de datos en SQL

¡Practiquemos!

Combinación de datos en SQL

Preparing Video For Download...