Unterabfragen mit Semi-Joins und Anti-Joins

Daten in SQL verbinden (JOIN)

Maham Faisal Khan

Senior Content Developer, DataCamp

Vollständiger INNER Join

Diagramm für einen INNER JOIN auf das Feld id

Ein Diagramm mit zwei Tabellen: left_table und right_table. Das Ergebnis der Verbindung der beiden Abfragen wird rechts angezeigt, wobei nur die Datensätze zurückgegeben werden, die in beiden Tabellen in der Spalte „id“ übereinstimmen.

Daten in SQL verbinden (JOIN)

Additive Joins

SELECT *
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
Daten in SQL verbinden (JOIN)

Additive Joins

Ein Diagramm, das einen additiven Join erklärt. Auf der linken Seite werden zwei Tabellen angezeigt: left_table und right_table. Auf der rechten Seite siehst du das Ergebnis einer Abfrage INNER JOIN, die eine ID-Spalte in den beiden Tabellen benutzt. Felder mit anderen Namen werden mit ihren ursprünglichen Namen hinzugefügt. Da das Datumsfeld in beiden Tabellen vorkommt, wird es zweimal hinzugefügt.

Daten in SQL verbinden (JOIN)

Semi Join

Ein Semi Join wählt Datensätze in der ersten Tabelle aus, für welche eine Bedingung in der zweiten Tabelle erfüllt ist.

Ein Diagramm mit zwei Tabellen, left_table und right_table, die zur Veranschaulichung eines Semi-Join verwendet werden. left_table enthält zwei Spalten, id und col1. right_table enthält nur eine Spalte, col2.

Daten in SQL verbinden (JOIN)

Semi Join

Ein Diagramm mit zwei Tabellen, „left_table“ und „right_table“, die zur Veranschaulichung eines Semi-Join verwendet werden. „col2“ wird zum Filtern von „col1“ verwendet. Datensätze in left_table, bei denen col1 keine Übereinstimmung in col2 findet, wurden ausgeblendet.

Daten in SQL verbinden (JOIN)

Semi Join

Ein Diagramm mit zwei Tabellen, „left_table“ und „right_table“. Das Ergebnis eines Semi Joins beider Tabellen wird auf der rechten Seite angezeigt. Es wurden nur Datensätze in left_table zurückgegeben, bei denen col1 eine Übereinstimmung in col2 gefunden hat. Diese entsprechen den IDs 2 und 3.

Daten in SQL verbinden (JOIN)

Unser erster Semi Join

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          |
Daten in SQL verbinden (JOIN)

Aufbauend auf unserem Semi Join

SELECT country
FROM states
WHERE indep_year < 1800;
|----------|
| country  |
|----------|
| Portugal |
| Spain    |
|----------|
Daten in SQL verbinden (JOIN)

Den Semi Join Abschließen (eine Einführung in Unterabfragen)

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      |
|-------------------------|-----------|-------------|
Daten in SQL verbinden (JOIN)

Anti Join

Ein Diagramm mit zwei Tabellen, „left_table“ und „right_table“, die zur Veranschaulichung eines Anti Joins verwendet werden. „col2“ wird zum Filtern von „col1“ verwendet. Datensätze in left_table, bei denen col1 keine Übereinstimmung in col2 findet, wurden ausgeblendet.NOT

Daten in SQL verbinden (JOIN)

Anti Join

Ein Diagramm mit zwei Tabellen, „left_table“ und „right_table“. Das Ergebnis eines Anti Joins für beide Tabellen wird rechts angezeigt. Es wurden nur Datensätze aus left_table zurückgegeben, bei denen für col1 keine Übereinstimmung in col2 gefunden wurde. Diese entsprechen den IDs 1 und 4.

Daten in SQL verbinden (JOIN)

Ein Anti Join mit den Präsidenten

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    |
Daten in SQL verbinden (JOIN)

Lass uns üben!

Daten in SQL verbinden (JOIN)

Preparing Video For Download...