Zum Hauptinhalt springen

Wie kann ich Daten aus zwei Tabellen ausgeben, ohne JOIN in SQL zu verwenden

In der Welt der Datenbanken, der Operator JOIN es ist ein leistungsfähiges Werkzeug, mit dem Sie Daten aus mehreren Tabellen unter bestimmten Bedingungen zusammenführen können. Es gibt jedoch manchmal Situationen, in denen die Verwendung des JOIN-Operators nicht die optimale Lösung ist. Dies kann auf verschiedene Faktoren zurückzuführen sein, z. B. die Komplexität von Abfragen, die große Menge an Daten oder die Notwendigkeit, die Einfachheit des Codes beizubehalten.

Verbinden von Tabellen in SQL

Sie können Unterabfragen verwenden, um zwei Tabellen ohne JOIN-Anweisung in SQL zu verbinden. Mit Unterabfragen können Sie eine Abfrage für eine Tabelle innerhalb der Hauptabfrage für eine andere Tabelle ausführen.

Um beispielsweise Daten aus der Tabelle "Kunden" und der Tabelle "Bestellungen" abzuleiten, können Sie die folgende SQL-Abfrage verwenden:

SELECT * FROM КлиентыWHERE ID IN (SELECT ID_клиента FROM Заказы);

In diesem Beispiel wählt die Unterabfrage SELECT Kunden-ID FROM Bestellungen alle Kunden-IDs aus der Tabelle Bestellungen aus. Diese Unterabfrage wird dann in der Hauptabfrage SELECT * FROM Clients WHERE ID IN (SELECT ID_CLIENT FROM Aufträge) verwendet, um alle Daten aus der Tabelle Kunden auszuwählen, wobei die Kundennummer in der Auswahl der Unterabfrage vorhanden ist.

Daher können Sie mit Unterabfragen Daten aus zwei Tabellen kombinieren, ohne den JOIN-Operator zu verwenden.

Methode 1: Verwenden von Unterabfragen

Dazu können Sie zwei separate Abfragen erstellen, eine für jede Tabelle, und dann die Ergebnisse dieser Abfragen zusammenführen. Sie können beispielsweise zuerst eine Abfrage für Tabelle 1 ausführen, um die erforderlichen Daten abzurufen, und diese Daten dann in der zweiten Abfrage für Tabelle 2 verwenden.

Ein Beispiel:

SELECT column1, column2 FROM table1 WHERE column1 IN (SELECT column3 FROM table2);

In diesem Beispiel wählen wir die Spalten column1 und column2 aus table1 aus, wobei der Wert von column1 als Ergebnis einer Unterabfrage für die Spalte column3 aus table2 vorhanden ist.

Die Verwendung von Unterabfragen kann ein nützliches Werkzeug für die Arbeit mit Daten aus zwei Tabellen sein, ohne den JOIN-Operator in SQL zu verwenden. Beachten Sie jedoch, dass Unterabfragen möglicherweise langsamer sind als JOIN-Anweisungen und bei der Arbeit mit großen Datenmengen Leistungseinschränkungen aufweisen können.

Methode 2: Verwenden von temporären Tabellen

Wenn Sie Daten aus zwei Tabellen zusammenführen müssen, ohne den JOIN-Operator zu verwenden, können Sie temporäre Tabellen verwenden. Dabei erstellen Sie zunächst zwei separate Tabellen für jede der ausgewählten Tabellen und kombinieren sie dann mit dem UNION-Operator.

Hier ist ein Beispielcode:

Erstellen temporärer Tabellen:

CREATE TEMPORARY TABLE temp_table1 ASSELECT column1, column2FROM table1;CREATE TEMPORARY TABLE temp_table2 ASSELECT column3, column4FROM table2;

Zusammenführen temporärer Tabellen:

SELECT column1, column2FROM temp_table1UNIONSELECT column3, column4FROM temp_table2;

Auf diese Weise können Sie Daten aus zwei Tabellen abrufen, ohne einen JOIN zu verwenden. Es ist wichtig zu beachten, dass temporäre Tabellen nur innerhalb der aktuellen Datenbankverbindung verfügbar sind.

Anmerkung: Die Verwendung temporärer Tabellen kann nützlich sein, wenn Daten aus zwei Tabellen nicht dauerhaft gespeichert werden müssen, sondern nur ein einmaliger Join erforderlich ist.

Methode 3: Verwenden von UNION

Durch die Verwendung von UNION können Sie zwei SELECT-Abfragen so kombinieren, dass das Ergebnis eine Tabelle mit allen eindeutigen Datensätzen aus beiden Tabellen ist.

Beispiel für die Verwendung von UNION:

SELECT column1 FROM table1UNIONSELECT column2 FROM table2

In diesem Beispiel wählen wir alle Werte aus der Spalte column1 der Tabelle table1 aus und kombinieren sie mit allen Werten aus der Spalte column2 der Tabelle table2. Das Ergebnis ist eine Tabelle mit eindeutigen Werten aus beiden Spalten.

Beachten Sie, dass die Struktur der Tabellen, die mit UNION zusammengeführt werden, identisch sein muss. Das heißt, die Anzahl und die Spaltentypen müssen übereinstimmen.

Methode 4: Verwenden einer Kreuzverbindung

Um eine Kreuzverbindung zu verwenden, müssen Sie die Namen der beiden Tabellen nach dem FROM-Schlüsselwort angeben. Zum Beispiel:

SELECT *FROM table1, table2;

Diese Abfrage gibt ein Ergebnis zurück, das alle Zeilen aus Tabelle table1 enthält, die mit allen Zeilen aus Tabelle table2 kombiniert sind. Wenn die Tabellen jeweils N und M Zeilen enthalten, enthält das Ergebnis N * M Zeilen.

Die Verwendung einer Kreuzverbindung kann jedoch zu einer großen Anzahl von Zeilen führen. Daher wird empfohlen, diese Methode nur dann anzuwenden, wenn Sie den vollständigen Satz möglicher Zeilenkombinationen abrufen möchten.

Darüber hinaus kann eine Kreuzverbindung für andere Operationen nützlich sein, z. B. das Zählen einer Summe oder das Finden eines maximalen Werts, wenn die Bedingungen für die Verknüpfung zwischen Tabellen keine Rolle spielen.