Odpowiedzi:
UNION
umieszcza po sobie wiersze z zapytań, a jednocześnie JOIN
tworzy produkt kartezjański i dzieli go na części - zupełnie inne operacje. Trywialny przykład UNION
:
mysql> SELECT 23 AS bah
-> UNION
-> SELECT 45 AS bah;
+-----+
| bah |
+-----+
| 23 |
| 45 |
+-----+
2 rows in set (0.00 sec)
podobny trywialny przykład 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
i jak mogę to osiągnąć w standardowym języku SQL? Maria DB ma polecenie union join
, ale inne bazy danych nie. Dzięki.
Połączenia i związki mogą być używane do łączenia danych z jednej lub więcej tabel. Różnica polega na sposobie łączenia danych.
Mówiąc prościej, sprzężenia łączą dane w nowe kolumny . Jeśli dwie tabele zostaną połączone, dane z pierwszej tabeli zostaną wyświetlone w jednym zestawie kolumn obok kolumny drugiej tabeli w tym samym wierszu.
Związki łączą dane w nowe wiersze. Jeśli dwie tabele są „zjednoczone” razem, dane z pierwszej tabeli znajdują się w jednym zestawie wierszy, a dane z drugiej tabeli w innym zestawie. Wiersze mają ten sam wynik.
Oto wizualne przedstawienie złączenia. Kolumny tabeli A i B są łączone w jeden wynik.
Każdy wiersz w wyniku zawiera kolumny z OBA tabeli A i B. Wiersze są tworzone, gdy kolumny z jednej tabeli pasują do kolumn z drugiej. To dopasowanie nazywa się warunkiem dołączenia.
To sprawia, że złączenia są naprawdę świetne do wyszukiwania wartości i włączania ich do wyników. Zwykle jest to wynikiem denormalizacji (normalizacji odwrotnej) i obejmuje użycie klucza obcego w jednej tabeli do wyszukiwania wartości kolumn przy użyciu klucza podstawowego w innej.
Teraz porównaj powyższe przedstawienie ze związkiem. W związku każdy wiersz w wyniku pochodzi z jednej tabeli LUB drugiej. W związku kolumny nie są łączone w celu utworzenia wyników, wiersze są łączone.
Zarówno sprzężenia, jak i związki mogą być używane do łączenia danych z jednej lub więcej tabel w jeden wynik. Obaj zajmują się tym na różne sposoby. Podczas gdy łączenie służy do łączenia kolumn z różnych tabel, łączenie służy do łączenia wierszy.
UNION łączy wyniki dwóch lub więcej zapytań w jeden zestaw wyników, który zawiera wszystkie wiersze należące do wszystkich zapytań w unii.
Za pomocą JOIN można pobierać dane z dwóch lub więcej tabel w oparciu o logiczne relacje między nimi. Połączenia wskazują, w jaki sposób SQL powinien wykorzystywać dane z jednej tabeli do wybierania wierszy w innej tabeli.
Operacja UNION różni się od używania JOIN, które łączą kolumny z dwóch tabel.
Przykład UNII:
SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]
Wynik:
Column1 Column2
-------------------
1 2
3 4
DOŁĄCZ Przykład:
SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId
Spowoduje to wyświetlenie wszystkich wierszy z obu tabel, dla których warunek a.Id = b.AFKId
jest spełniony.
Możesz zobaczyć te same schematyczne wyjaśnienia dla obu, ale są one całkowicie mylące.
Dla UNII:
W przypadku DOŁĄCZENIA:
Łączenie służy do wyświetlania kolumn o takich samych lub różnych nazwach z różnych tabel. Wyświetlane dane wyjściowe będą miały wszystkie kolumny pokazane indywidualnie. Oznacza to, że kolumny zostaną wyrównane obok siebie.
Operator zestawu UNION służy do łączenia danych z dwóch tabel zawierających kolumny o tym samym typie danych. Po wykonaniu operacji UNION dane z obu tabel zostaną zebrane w jednej kolumnie o tym samym typie danych.
Na przykład:
Zobacz dwie tabele przedstawione poniżej:
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
Teraz dla wykonania typu JOIN zapytanie jest pokazane poniżej.
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
To jest połączenie.
UNION oznacza, że musisz do tabel lub zestawów wyników z taką samą ilością i typem kolumn i dodajesz to do tabel / zestawów wyników razem. Spójrz na ten przykład:
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
To są zupełnie różne rzeczy.
Dołączyć pozwala odnosić podobne dane w różnych tabelach.
Związek zwraca wyniki dwóch różnych zapytań jako pojedynczy zestaw rekordów.
Złączeń i związków można używać do łączenia danych z jednej lub więcej tabel. Różnica polega na sposobie łączenia danych.
Mówiąc prościej, sprzężenia łączą dane w nowe kolumny. Jeśli dwie tabele zostaną połączone, dane z pierwszej tabeli zostaną wyświetlone w jednym zestawie kolumn obok kolumny drugiej tabeli w tym samym wierszu.
Związki łączą dane w nowe wiersze. Jeśli dwie tabele są „zjednoczone” razem, dane z pierwszej tabeli znajdują się w jednym zestawie wierszy, a dane z drugiej tabeli w innym zestawie. Wiersze mają ten sam wynik.
Pamiętaj, że unia połączy wyniki ( dla pewności SQL Server ) (funkcja czy błąd?)
select 1 as id, 3 as value
union
select 1 as id, 3 as value
id, wartość
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, wartość, id, wartość
1,3,1,3
1. Klauzula Złączenia SQL służy do łączenia rekordów z dwóch lub więcej tabel w bazie danych. JOIN to sposób łączenia pól z dwóch tabel przy użyciu wspólnych dla nich wartości.
2. Operator SQL UNION łączy wynik dwóch lub więcej instrukcji SELECT. Każda instrukcja SELECT w UNION musi mieć taką samą liczbę kolumn. Kolumny muszą również mieć podobne typy danych. Ponadto kolumny w każdej instrukcji SELECT muszą być w tej samej kolejności.
na przykład: klienci z tabeli 1 / zamówienia z tabeli 2
połączenie wewnętrzne:
WYBIERZ ID, NAZWĘ, KWOTĘ, DATĘ
OD KLIENTÓW
WEWNĘTRZNE ZAMÓWIENIA
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
unia:
WYBIERZ ID, NAZWĘ, KWOTĘ, DATĘ
OD KLIENTÓW
LEWE DOŁĄCZ DO ZAMÓWIENIA
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNIA
WYBIERZ ID, NAZWĘ, KWOTĘ, DATĘ OD KLIENTÓW
PRAWE DOŁĄCZ DO ZAMÓWIENIA
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Usinging UNION
UNION łączy wyniki dwóch lub więcej zapytań w jeden zestaw wyników, który zawiera wszystkie wiersze należące do wszystkich zapytań w unii.
Przykład UNII: WYBIERZ 121 AS [Kolumna1], 221 AS [Kolumna2] UNIA WYBIERZ 321 AS [kolumna 1], 422 AS [kolumna 2]
Wynik: Kolumna1 Kolumna2 ------------------- 121 221 321 422
Korzystanie z DOŁĄCZENIA
DOŁĄCZ, możesz pobierać dane z dwóch lub więcej tabel w oparciu o logiczne relacje między nimi.
DOŁĄCZ Przykład: WYBIERZ a. Kolumna 1, b Kolumna 2 OD TblA a WEJŚCIE DO WEJŚCIA TblB b WŁ. A.Id = b. Id
W skrócie są one podobne, ponieważ łączy się dwie tabele lub zestawy wyników, ale UNION naprawdę służy do łączenia zestawów wyników z TĄ SAMĄ LICZBĄ KOLUMN z KOLUMNAMI PODOBNYMI TYPAMI DANYCH. STRUKTURA jest taka sama, dodaje się tylko nowe wiersze.
W złączeniach można łączyć tabele / zestawy wyników z dowolną możliwą strukturą, w tym złączeniem kartezjańskim, w którym NIE ma współdzielonych / podobnych kolumn.
Lubię myśleć o ogólnej różnicy jako: