Mix n Match – LEFT JOIN und RIGHT JOIN

Einführung in SQL Server

John MacKintosh

Instructor

Gründe für LEFT und RIGHT JOINs

  • Warum brauchen wir LEFT und RIGHT JOINs?
  • Eine Tabelle hat vielleicht keine genaue Übereinstimmung in einer anderen:
    • Kundenbestellhistorie für Marketingkampagnen
    • Produktliste und Historie von Rücksendungen
    • Patientinnen und Patienten, die aufgenommen wurden, aber noch nicht entlassen sind
Einführung in SQL Server

Gründe für LEFT und RIGHT JOINs

  • Warum brauchen wir LEFT und RIGHT JOINs?
  • Eine Tabelle hat vielleicht keine genaue Übereinstimmung in einer anderen:
    • Kundenbestellhistorie für Marketingkampagnen
    • Produktliste und Historie von Rücksendungen
    • Patientinnen und Patienten, die aufgenommen wurden, aber noch nicht entlassen sind
Einführung in SQL Server

Tabelle Aufnahmen

+------------+----------+
| Patient_ID | Admitted | 
|------------+----------|
| 1          | 1        |
| 2          | 1        |
| 3          | 1        |
| 4          | 1        |
| 5          | 1        |
+------------+----------+

Tabelle Entlassungen

+------------+------------+
| Patient_ID | Discharged | 
|------------+------------|
| 1          | 1          |
| 3          | 1          |
| 4          | 1          |
+------------+------------+

INNER JOIN:

+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1          | 1        | 1          |
| 3          | 1        | 1          |
| 4          | 1        | 1          |
+------------+----------+------------+

LEFT JOIN:

+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1          | 1        | 1          |
| 2          | 1        | NULL       |
| 3          | 1        | 1          |
| 4          | 1        | 1          |
| 5          | 1        | NULL       |
+------------+----------+------------+
Einführung in SQL Server

Syntax für LEFT JOINs

SELECT 
  Admitted.Patient_ID, 
  Admitted, 
  Discharged 
FROM Admitted 
LEFT JOIN Discharged ON Discharged.Patient_ID = Admitted.Patient_ID;

Einführung in SQL Server
SELECT 
  Admitted.Patient_ID, 
  Admitted, 
  Discharged 
FROM Admitted 
LEFT JOIN Discharged ON Discharged.Patient_ID = Admitted.Patient_ID;
+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1          | 1        | 1          |
| 2          | 1        | NULL       |
| 3          | 1        | 1          |
| 4          | 1        | 1          |
| 5          | 1        | NULL       |
+------------+----------+------------+
Einführung in SQL Server

RIGHT JOIN

SELECT 
  Admitted.Patient_ID, 
  Admitted, 
  Discharged 
FROM Discharged 
RIGHT JOIN Admitted ON Admitted.Patient_ID = Discharged.Patient_ID;

Einführung in SQL Server

Ergebnisse RIGHT JOIN

SELECT 
  Admitted.Patient_ID, 
  Admitted, 
  Discharged 
FROM Discharged 
RIGHT JOIN Admitted ON Admitted.Patient_ID = Discharged.Patient_ID;
+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1          | 1        | 1          |
| 2          | 1        | NULL       |
| 3          | 1        | 1          |
| 4          | 1        | 1          |
| 5          | 1        | NULL       |
+------------+----------+------------+
Einführung in SQL Server

Zusammenfassung

  • INNER JOIN: Gibt nur übereinstimmende Zeilen zurück
  • LEFT JOIN (oder RIGHT JOIN): Alle Zeilen aus der Haupttabelle plus Übereinstimmungen aus der Verknüpfungstabelle
  • NULL: Wenn keine Übereinstimmung gefunden wird
  • LEFT JOIN und RIGHT JOIN können austauschbar sein
Einführung in SQL Server

Einführung in SQL Server

Lass uns üben!

Einführung in SQL Server

Preparing Video For Download...