Subconsulta con semiuniones y antiuniones

Unir 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, y se devuelven solo los registros coincidentes en la columna id de ambas tablas.

Unir datos en SQL

Uniones aditivas

SELECT *
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
Unir 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. Como el campo date aparece en ambas tablas, se añade dos veces.

Unir datos en SQL

Semiunión

Una semiunión elige los 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 utilizarán para mostrar una semiunión. left_table tiene dos columnas, id y col1. right_table solo tiene una columna, col2.

Unir 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 de left_table en los que col1 no encuentra una coincidencia en col2 están atenuados.

Unir 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. Corresponden a los ides dos y tres.

Unir 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          |
Unir datos en SQL

Sobre la base de nuestra semiunión

SELECT country
FROM states
WHERE indep_year < 1800;
|----------|
| country  |
|----------|
| Portugal |
| Spain    |
|----------|
Unir 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      |
|-------------------------|-----------|-------------|
Unir 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. Registros de left_table en los que col1 no encuentra una coincidencia en col2 están atenuados.

Unir 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. Corresponden a los ides uno y cuatro.

Unir 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    |
Unir datos en SQL

¡Vamos a practicar!

Unir datos en SQL

Preparing Video For Download...