Definition:
Ein Join und eine Sub-Query sind zwei Techniken in SQL, die dazu verwendet werden, Daten aus mehreren Tabellen zu kombinieren oder abzurufen.
- Join: Ein Join ermöglicht das Verbinden von Zeilen aus zwei oder mehr Tabellen anhand einer gemeinsamen Spalte zwischen ihnen.
- Sub-Query: Eine Sub-Query, auch Unterabfrage genannt, ist eine Anfrage, die innerhalb einer anderen SQL-Anfrage eingebettet ist. Eine Sub-Query kann Daten zurückgeben, die dann von der Hauptanfrage verwendet werden.
Beispiel:
Nehmen wir an, wir haben zwei Tabellen: Mitarbeiter
und Abteilung
.
Tabelle Mitarbeiter:
| MitarbeiterID | Name | AbteilungsID |
|---------------|-----------|--------------|
| 1 | Müller | 10 |
| 2 | Schneider | 20 |
Tabelle Abteilung:
| AbteilungsID | Abteilungsname |
|--------------|-----------------|
| 10 | IT |
| 20 | Vertrieb |
- Join: Möchten wir den Namen des Mitarbeiters zusammen mit dem Namen seiner Abteilung anzeigen, könnten wir einen Join verwenden:
SELECT Mitarbeiter.Name, Abteilung.Abteilungsname
FROM Mitarbeiter
JOIN Abteilung ON Mitarbeiter.AbteilungsID = Abteilung.AbteilungsID;
- Sub-Query: Wenn wir die Namen der Mitarbeiter anzeigen möchten, die in der IT-Abteilung arbeiten, könnten wir eine Sub-Query verwenden:
SELECT Name
FROM Mitarbeiter
WHERE AbteilungsID = (SELECT AbteilungsID FROM Abteilung WHERE Abteilungsname = 'IT');
Nutzung und Eigenschaften:
- Ein Join ist in der Regel effizienter als eine Sub-Query, wenn es darum geht, Daten aus mehreren Tabellen zu kombinieren.
- Eine Sub-Query kann in verschiedenen Teilen einer SQL-Anweisung verwendet werden, nicht nur in der WHERE-Klausel. Sie kann in den SELECT-, FROM- oder WHERE-Klauseln einer Hauptanfrage eingesetzt werden.
- Während Joins dazu tendieren, horizontale Resultatsets (hinzufügen von Spalten) zu erzeugen, erzeugen Sub-Queries in der Regel vertikale Resultatsets (hinzufügen von Zeilen).
Abschließend lässt sich sagen, dass sowohl Joins als auch Sub-Queries wichtige Werkzeuge in SQL sind. Welche Methode in einem bestimmten Szenario zu verwenden ist, hängt von der spezifischen Anforderung und der Datenstruktur ab.