Verstehen von SQL CROSS JOIN (mit praktischen Beispielen)

CROSS JOIN Einführung

Was ist ein CROSS JOIN in SQL?

In SQL werden CROSS JOINs verwendet, um jede Zeile einer Tabelle mit jeder Zeile einer anderen Tabelle zu kombinieren und das kartesische Produkt der Mengen von Zeilen aus den verbundenen Tabellen zurückzugeben.

Wann wird die CROSS JOIN verwendet?

Die CROSS JOIN-Abfrage in SQL wird verwendet, um alle Kombinationen von Datensätzen in zwei Tabellen zu erzeugen. Sie haben z. B. zwei Spalten: Größe und Farbe, und Sie benötigen eine Ergebnismenge, die alle möglichen Kombinationen aus diesen beiden Spalten anzeigt - da kommt der CROSS JOIN gerade recht.

CROSS JOIN in SQL Server Syntax von CROSS JOIN in SQL zwischen zwei Tabellen

Die Syntax für den CROSS JOIN lautet wie folgt:

SELECT      [column names]
FROM        [TableA]
CROSS JOIN  [TableB]
                                    

Genießen Sie CROSS JOINs mit

SQL Complete

What is CROSS JOIN in SQL Server with example in SQL Complete

Obwohl die Syntax für die CROSS JOIN-Abfrage in SQL recht einfach und geradlinig zu sein scheint, müssen Sie damit vorsichtig sein. Erstens können CROSS JOINs potenziell riesige Ergebnismengen liefern, die schwer zu verwalten und zu analysieren sind. Zweitens müssen Sie sich die genauen Namen der Tabellen und Spalten merken, um die Abfrage auszuführen.

Da kommt SQL Complete gerade recht. Dank der erweiterten Code-Vervollständigung und der kontextsensitiven Hinweise können Sie schnelleren und saubereren Code schreiben. Und mit der Column Picker-Funktionalität brauchen Sie sich nicht mehr um das Auswendiglernen von Spaltennamen zu kümmern - wählen Sie einfach die gewünschten Spalten aus der Vorschlagsliste aus, die zur Bequemlichkeit des Benutzers gefiltert werden kann.

In diesem Tutorium werden wir einen genauen Blick auf CROSS JOINs in SQL werfen, auf verschiedene Aspekte ihrer Verwendung und darauf, wie man die Arbeit mit JOINs mit SQL Complete erleichtert.


dbForge SQL Complete

Bewältigen Sie selbst die komplexesten JOINs mit SQL Complete

SQL CROSS JOIN erklärt mit einem praktischen Beispiel

Angenommen, wir haben zwei Datenbanktabellen: Cars, in der die Automodelle und ihre Preise aufgeführt sind, und Colors, in der die Farbnamen und die Zusatzpreise für diese Farben aufgeführt sind. Wir müssen alle möglichen Kombinationen von Autos und Farben ermitteln. Dazu führen wir die folgende Abfrage aus:

SELECT
	 c.Car_model
	,c1.Color_name
FROM Cars c
CROSS JOIN Colors c1
                                    

Wir haben drei Automodelle und drei Farben. Die CROSS JOIN-Abfrage liefert neun Ergebnisse - die Anzahl der Zeilen in der ersten Tabelle wird mit der Anzahl der Zeilen in der zweiten Tabelle multipliziert: 3х3=9.

What is CROSS JOIN in SQL Server with example

Verwenden Sie CROSS JOIN, um drei Tabellen in SQL Server zu verbinden

Sie können den CROSS JOIN auf so viele Tabellen anwenden, wie Sie wollen.

Betrachten wir das folgende Beispiel. Nehmen wir an, dass wir nun alle Kombinationen nicht nur von Automodellen und Farben, sondern auch von Reifen, die zu diesen Autos passen können, benötigen.

SELECT
	 c.Car_model
	,c1.Color_name
	,t.Tyre_manufacturer
FROM Cars c
CROSS JOIN Colors c1
CROSS JOIN Tyres t
                                    

Und hier ist die Ergebnismenge, die aus 27 Zeilen besteht. Wie Sie sich erinnern, haben wir 3 Automodelle, 3 Autofarben und jetzt fügen wir 3 Reifenhersteller hinzu. Der CROSS JOIN gibt alle möglichen Kombinationen zurück: 3x3x3=27.

How to cross join three tables in SQL Server with the help of SQL Complete

Verwenden Sie CROSS JOIN, um einen Bericht zu erstellen

Sie können CROSS JOIN verwenden, um Datenbankdaten abzurufen und sie in einem für die Analyse und Berichterstattung geeigneten Format anzuzeigen.

Stellen Sie sich vor, Sie haben die Tabelle Staff, die folgende Spalten enthält: StaffID, Department, Shift_name, Start_time, End_time.

Wir möchten einen Bericht erstellen, der alle möglichen Schichten für die Wartungsabteilung anzeigt. Dazu führen wir die SELECT-Anweisung mit der CROSS JOIN-Klausel aus und wenden die Filterung mit WHERE an.

SELECT s.Department, s1.Shift_name, s1.Start_Time, s1.End_Time
FROM Staff s
CROSS JOIN Staff s1
WHERE s.Department = 'Maintenance'
ORDER BY s1.Start_Time
                                    
How to use CROSS JOINs for reporting in SQL Server

Verwenden Sie CROSS JOIN, um einen großen Datensatz zu erstellen

CROSS JOINs können potenziell große Datensätze erzeugen und sollten daher mit Bedacht eingesetzt werden.

Angenommen, unsere Spalten Car_models und Color_names haben jeweils 1000 Zeilen. Wenn wir in diesem Fall in einer Abfrage CROSS JOIN verwenden, wird die Ergebnismenge so groß wie eine Million Zeilen sein.

Viele Experten empfehlen, CROSS JOINs aufgrund von Leistungsproblemen zu vermeiden. Am besten wäre es, die Daten vor der Verwendung eines CROSS JOIN zu aggregieren, wenn dies wirklich erforderlich ist.

Möglichkeiten zur Vermeidung von Leistungsproblemen im Zusammenhang mit CROSS JOINs:

  • Verwenden Sie einen weiteren JOIN (INNER/LEFT/RIGHT) mit 2 ON-Bedingungen
  • Verwenden Sie die GROUP BY-Klausel zum Voraggregieren von Daten
CROSS JOINs generate large data sets

SQL-Ausführungsplan der CROSS JOIN-Abfrage

Vergleichen wir zwei Abfragen: die Abfrage mit CROSS JOIN und ihre Alternative.

Abfrage 1: Mit CROSS JOIN

SELECT p.Product_name, s.Store_address
FROM Products p
CROSS JOIN Stores s;
                                    

Abfrage 2: CROSS JOIN wird durch INNER JOIN ersetzt

SELECT p.Product_name, s.Store_address
FROM Products p
INNER JOIN Stores s ON p.ProductID=s.StoreID;
                                    

Die Abfragen sind recht umfangreich und liefern eine Million Zeilen. Wie Sie aus den Ausführungsplänen ersehen können, ist INNER JOIN deutlich schneller und kostengünstiger.

CROSS JOIN alternative execution plans

FAQ

Mit SQL Complete erhalten Sie

  • Code-Schnipsel für JOIN-Klauseln
  • Kontextbasierte Vorschläge für Tabellen- und Spaltennamen
  • Navigation zwischen den Schlüsselwörtern CASE und END
  • Hervorhebung von übereinstimmenden Schlüsselwortpaaren
  • Schnellinformationen über Datenbankobjekte
  • Sofortiger Code-Formatierer mit integrierten Formatierungsprofilen

SQL Complete

Erweiterte Lösung für die Entwicklung, das Management und die Verwaltung von SQL-Datenbanken