Antworten:
UNION
Setzt Zeilen aus Abfragen nacheinander, erstellt JOIN
ein kartesisches Produkt und unterteilt es - völlig andere Vorgänge. Triviales Beispiel für UNION
:
mysql> SELECT 23 AS bah
-> UNION
-> SELECT 45 AS bah;
+-----+
| bah |
+-----+
| 23 |
| 45 |
+-----+
2 rows in set (0.00 sec)
ähnliches triviales Beispiel für JOIN
:
mysql> SELECT * FROM
-> (SELECT 23 AS bah) AS foo
-> JOIN
-> (SELECT 45 AS bah) AS bar
-> ON (33=33);
+-----+-----+
| foo | bar |
+-----+-----+
| 23 | 45 |
+-----+-----+
1 row in set (0.01 sec)
UNION-JOIN
und wie ich es in Standard-SQL erreichen kann? Maria DB hat einen Befehl union join
, andere Datenbanken jedoch nicht. Vielen Dank.
Joins und Unions können verwendet werden, um Daten aus einer oder mehreren Tabellen zu kombinieren. Der Unterschied liegt in der Kombination der Daten.
In einfachen Worten kombinieren Joins Daten zu neuen Spalten . Wenn zwei Tabellen miteinander verbunden sind, werden die Daten aus der ersten Tabelle in einem Satz von Spalten neben der Spalte der zweiten Tabelle in derselben Zeile angezeigt.
Gewerkschaften kombinieren Daten in neuen Zeilen. Wenn zwei Tabellen miteinander „verbunden“ sind, befinden sich die Daten aus der ersten Tabelle in einem Satz von Zeilen und die Daten aus der zweiten Tabelle in einem anderen Satz. Die Zeilen sind im gleichen Ergebnis.
Hier ist eine visuelle Darstellung eines Joins. Die Spalten von Tabelle A und B werden zu einem einzigen Ergebnis zusammengefasst.
Jede Zeile im Ergebnis enthält Spalten aus BEIDEN Tabellen A und B. Zeilen werden erstellt, wenn Spalten aus einer Tabelle mit Spalten aus einer anderen übereinstimmen. Diese Übereinstimmung wird als Join-Bedingung bezeichnet.
Dies macht Joins wirklich großartig, um Werte nachzuschlagen und sie in Ergebnisse einzubeziehen. Dies ist normalerweise das Ergebnis der Denormalisierung (Umkehrung der Normalisierung) und umfasst die Verwendung des Fremdschlüssels in einer Tabelle, um Spaltenwerte mithilfe des Primärschlüssels in einer anderen Tabelle nachzuschlagen.
Vergleichen Sie nun die obige Darstellung mit der einer Gewerkschaft. In einer Union stammt jede Zeile im Ergebnis aus einer Tabelle ODER der anderen. In einer Union werden Spalten nicht kombiniert, um Ergebnisse zu erstellen. Zeilen werden kombiniert.
Sowohl Joins als auch Unions können verwendet werden, um Daten aus einer oder mehreren Tabellen zu einem einzigen Ergebnis zu kombinieren. Sie gehen beide auf unterschiedliche Weise vor. Während ein Join zum Kombinieren von Spalten aus verschiedenen Tabellen verwendet wird, wird die Vereinigung zum Kombinieren von Zeilen verwendet.
UNION kombiniert die Ergebnisse von zwei oder mehr Abfragen zu einer einzigen Ergebnismenge, die alle Zeilen enthält, die zu allen Abfragen in der Union gehören.
Mithilfe von JOINs können Sie Daten aus zwei oder mehr Tabellen basierend auf logischen Beziehungen zwischen den Tabellen abrufen. Verknüpfungen geben an, wie SQL Daten aus einer Tabelle verwenden soll, um die Zeilen in einer anderen Tabelle auszuwählen.
Die UNION-Operation unterscheidet sich von der Verwendung von JOINs, die Spalten aus zwei Tabellen kombinieren.
UNION Beispiel:
SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]
Ausgabe:
Column1 Column2
-------------------
1 2
3 4
JOIN Beispiel:
SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId
Dadurch werden alle Zeilen aus beiden Tabellen ausgegeben, für die die Bedingung erfüllt a.Id = b.AFKId
ist.
Möglicherweise sehen Sie für beide die gleichen schematischen Erklärungen, diese sind jedoch völlig verwirrend.
Für die UNION:
Für JOIN:
Ein Join wird zum Anzeigen von Spalten mit demselben oder unterschiedlichen Namen aus verschiedenen Tabellen verwendet. In der angezeigten Ausgabe werden alle Spalten einzeln angezeigt. Das heißt, die Spalten werden nebeneinander ausgerichtet.
Der UNION-Set-Operator wird zum Kombinieren von Daten aus zwei Tabellen verwendet, die Spalten mit demselben Datentyp enthalten. Wenn eine UNION ausgeführt wird, werden die Daten aus beiden Tabellen in einer einzelnen Spalte mit demselben Datentyp gesammelt.
Beispielsweise:
Siehe die beiden folgenden Tabellen:
Table t1
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
Table t2
manufacturer_id manufacturer
1 ABC Gmbh
2 DEF Co KG
Um nun einen JOIN-Typ auszuführen, wird die Abfrage unten gezeigt.
SELECT articleno, article, manufacturer
FROM t1 JOIN t2 ON (t1.manufacturer_id =
t2.manufacturer_id);
articelno article manufacturer
1 hammer ABC GmbH
2 screwdriver DEF Co KG
Das ist ein Join.
UNION bedeutet, dass Sie Tabellen oder Ergebnismengen mit der gleichen Anzahl und Art von Spalten erstellen müssen und diese zusammen zu Tabellen / Ergebnismengen hinzufügen müssen. Schauen Sie sich dieses Beispiel an:
Table year2006
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
Table year2007
Articleno article price manufacturer_id
1 hammer 6 $ 3
2 screwdriver 7 $ 4
SELECT articleno, article, price, manufactruer_id
FROM year2006
UNION
SELECT articleno, article, price, manufacturer_id
FROM year2007
articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
1 hammer 6 $ 3
2 screwdriver 7 $ 4
Das sind ganz andere Dinge.
Mit einem Join können Sie ähnliche Daten in verschiedenen Tabellen verknüpfen.
Eine Union gibt die Ergebnisse von zwei verschiedenen Abfragen als ein einziges Recordset zurück.
Joins und Gewerkschaften können verwendet werden, um Daten aus einer oder mehreren Tabellen zu kombinieren. Der Unterschied liegt in der Kombination der Daten.
In einfachen Worten kombinieren Joins Daten zu neuen Spalten. Wenn zwei Tabellen miteinander verbunden sind, werden die Daten aus der ersten Tabelle in einem Satz von Spalten neben der Spalte der zweiten Tabelle in derselben Zeile angezeigt.
Gewerkschaften kombinieren Daten in neuen Zeilen. Wenn zwei Tabellen miteinander „verbunden“ sind, befinden sich die Daten aus der ersten Tabelle in einem Satz von Zeilen und die Daten aus der zweiten Tabelle in einem anderen Satz. Die Zeilen sind im gleichen Ergebnis.
Denken Sie daran, dass Union Ergebnisse zusammenführt ( SQL Server um sicher zu sein) (Feature oder Fehler?)
select 1 as id, 3 as value
union
select 1 as id, 3 as value
ID, Wert
1,3
select * from (select 1 as id, 3 as value) t1 inner join (select 1 as id, 3 as value) t2 on t1.id = t2.id
ID, Wert, ID, Wert
1,3,1,3
1. Die SQL Joins-Klausel wird verwendet, um Datensätze aus zwei oder mehr Tabellen in einer Datenbank zu kombinieren. Ein JOIN ist ein Mittel zum Kombinieren von Feldern aus zwei Tabellen unter Verwendung gemeinsamer Werte.
2. Der SQL UNION-Operator kombiniert das Ergebnis von zwei oder mehr SELECT-Anweisungen. Jede SELECT-Anweisung innerhalb der UNION muss dieselbe Anzahl von Spalten haben. Die Spalten müssen auch ähnliche Datentypen haben. Außerdem müssen die Spalten in jeder SELECT-Anweisung in derselben Reihenfolge sein.
Zum Beispiel: Kunden in Tabelle 1 / Bestellungen in Tabelle 2
innere Verbindung:
ID, NAME, BETRAG, DATUM AUSWÄHLEN
VON KUNDEN
INNERE BEITRÄGE
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Union:
ID, NAME, BETRAG, DATUM AUSWÄHLEN
VON KUNDEN
LINKS BEITRETEN
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNION
WÄHLEN SIE ID, NAME, BETRAG, DATUM VON KUNDEN
RECHTS BEITRETEN
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Ussing UNION
UNION kombiniert die Ergebnisse von zwei oder mehr Abfragen zu einer einzigen Ergebnismenge, die alle Zeilen enthält, die zu allen Abfragen in der Union gehören.
UNION Beispiel: SELECT 121 AS [Spalte1], 221 AS [Spalte2] UNION SELECT 321 AS [Spalte1], 422 AS [Spalte2]
Ausgabe: Spalte1 Spalte2 ------------------- 121 221 321 422
Ussing JOINs
JOINs können Sie Daten aus zwei oder mehr Tabellen basierend auf logischen Beziehungen zwischen den Tabellen abrufen.
JOIN Beispiel: SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id.
In der Zusammenfassung sind sie insofern ähnlich, als zwei Tabellen oder Ergebnismengen kombiniert werden, aber UNION dient wirklich dazu, Ergebnismengen mit der GLEICHEN ANZAHL DER SPALTEN mit den SPALTEN MIT ÄHNLICHEN DATENTYPEN zu kombinieren. Die STRUKTUR ist dieselbe, es werden nur neue Zeilen hinzugefügt.
In Joins können Sie Tabellen / Ergebnismengen mit jeder möglichen Struktur kombinieren, einschließlich eines kartesischen Joins, bei dem KEINE gemeinsam genutzten / ähnlichen Spalten vorhanden sind.
Ich stelle mir den allgemeinen Unterschied gerne so vor: