Jaka jest różnica między JOIN a UNION?
Jaka jest różnica między JOIN
a UNION
? Mogę prosić o przykład?
15 answers
UNION
umieszcza linie z zapytań po sobie, podczas gdy JOIN
tworzy iloczyn kartezjański i podzestawia go - 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)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-10 02:31:02
Joins i Unions mogą być używane do łączenia danych z jednej lub więcej tabel. Różnica polega na tym, jak dane są łączone.
W prostych słowach, łączy połącz dane w nowe kolumny . Jeżeli dwie tabele są połączone ze sobą, wtedy dane z pierwszej tabeli są wyświetlane w jednym zestawie kolumn obok kolumny drugiej tabeli w tym samym wierszu.
Związki łączą dane w nowe wiersze. Jeśli dwie tabele są "połączone" razem, to dane z pierwszej tabeli znajdują się w jednej zestaw wierszy, a dane z drugiej tabeli w innym zestawie. Wiersze mają ten sam wynik.
Oto wizualne przedstawienie połączenia. Kolumny tabeli A i B są łączone w jeden wynik.
Każdy wiersz w wyniku zawiera kolumny z tabeli a i B. wiersze są tworzone, gdy kolumny z jednej tabeli pasują do kolumn z drugiej. Ten mecz nazywa się warunek join.
To sprawia, że joins naprawdę świetnie sprawdza się w wyszukiwaniu wartości i uwzględnianie ich w wynikach. Zwykle jest to wynikiem denormalizacji (odwrócenia normalizacji)i polega na użyciu klucza obcego w jednej tabeli, aby wyszukać wartości kolumn za pomocą klucza podstawowego w innej.
Teraz Porównaj powyższe przedstawienie z przedstawieniem związku. W unii każdy wiersz w wyniku pochodzi z jednej lub drugiej tabeli. W związku kolumny nie są łączone w celu utworzenia wyników, wiersze są łączone.
Zarówno połączenia jak i związki mogą być użyte do połącz dane z jednej lub więcej tabel w jeden wynik. Obydwoje robią to w inny sposób. Podczas gdy join jest używany do łączenia kolumn z różnych tabel, union jest używany do łączenia wierszy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-28 04:04:44
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.
Używając JOINs, możesz pobierać dane z dwóch lub więcej tabel na podstawie relacji logicznych między tabelami. Łączniki wskazują, w jaki sposób SQL powinien używać danych z jednej tabeli do wybierania wierszy w innej tabeli.
Operacja UNION różni się od użycia Joinsów, które łączą kolumny z dwóch stoły.
Przykład Unii:
SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]
Wyjście:
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
Wyświetli wszystkie wiersze z obu tabel, dla których warunek a.Id = b.AFKId
jest prawdziwy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-25 06:01:23
Możesz zobaczyć te same schematy objaśnień dla obu, ale są one całkowicie mylące.
Dla Związku:
Dla JOIN:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 14:21:38
Dołącz:
Łącznik służy do wyświetlania kolumn z tym samym lub różne nazwy z różnych tabel. Wyświetlane wyjście wszystkie kolumny będą wyświetlane indywidualnie. Czyli kolumny zostaną wyrównane obok siebie.
Unia:
Operator zbioru unijnego służy do łączenia danych z dwóch tabele, które mają kolumny o tym samym typie danych. Po wykonaniu Unii dane z obu tabel będą zebrane w jednej kolumnie o tej samej typ danych.
Na przykład:
Zobacz dwie tabele 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 wykonywania 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.
Unia oznacza, że musisz tabele lub resultset z taką samą ilość i typ kolumn i dodajesz to do tabele/wyniki 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 14:10:45
To zupełnie inne rzeczy.
A join pozwala powiązać podobne dane w różnych tabelach.
Unia zwraca wyniki dwóch różnych zapytań jako pojedynczy zestaw rekordów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 14:09:27
Union sprawia, że dwa zapytania wyglądają jak jedno. Joins służy do sprawdzania dwóch lub więcej tabel w pojedynczej instrukcji zapytania
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-12 17:33:59
Joins i unions mogą być używane do łączenia danych z jednej lub więcej tabel. Różnica polega na tym, jak dane są łączone.
W prostych słowach łączy połącz dane w nowe kolumny. Jeżeli dwie tabele są połączone ze sobą, wtedy dane z pierwszej tabeli są wyświetlane w jednym zestawie kolumn obok kolumny drugiej tabeli w tym samym wierszu.
Związki łączą dane w nowe wiersze. Jeżeli dwie tabele są "połączone" razem, wtedy dane z pierwszej tabeli znajdują się w jednym zestawie wierszy, a dane z drugiego stołu w innym zestawie. Wiersze mają ten sam wynik.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 14:32:58
Pamiętaj, że union Scali wyniki ( SQL Server dla pewności)(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, value,id, value
1,3,1,3
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 14:07:43
1. Klauzula SQL Joins 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 za pomocą wartości wspólnych dla każdej z nich.
2. Operator SQL UNION łączy wynik dwóch lub więcej poleceń SELECT. Każda deklaracja SELECT w Unii musi mieć taką samą liczbę kolumn. Kolumny muszą również posiadać podobne typy danych. Ponadto kolumny w każdej instrukcji SELECT muszą być w tej samej kolejności.
Dla przykład: tabela 1 Klienci / tabela 2 zamówienia
INNER join:
SELECT ID, NAME, AMOUNT, DATE
OD KLIENTÓW
INNER JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Unia:
SELECT ID, NAME, AMOUNT, DATE
OD KLIENTÓW
LEFT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
Unia
SELECT ID, NAME, AMOUNT, DATE OD KLIENTÓW
RIGHT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-23 14:05:39
Ussing UNION
UNION jest połączeniem wyników dwóch lub więcej zapytań w jeden zestaw wyników, który zawiera wszystkie wiersze należące do wszystkich zapytań w Unii.
UNION Example: SELECT 121 AS [Column1], 221 AS [Column2] UNION SELECT 321 AS [Column1], 422 AS [Column2]
Output: Column1 Column2 ------------------- 121 221 321 422
Ussing Dołącza
JOINs, można pobierać dane z dwóch lub więcej tabel na podstawie relacji logicznych między tabelami.
JOIN Example: SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-29 06:28:57
W skrócie, są one podobne, ponieważ dwie tabele lub zestawy wyników są łączone, ale UNION jest tak naprawdę do łączenia zestawów wyników z taką samą liczbą kolumn z kolumnami o podobnych typach danych. Struktura jest taka sama, dodawane są tylko nowe wiersze.
W joinesach można łączyć tabele/zbiory wyników z dowolną możliwą strukturą, w tym z kartezjańskim joinemem, gdzie nie ma wspólnych/podobnych kolumn.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-08 22:41:08
Operator Unii służy tylko do łączenia dwóch lub więcej poleceń SELECT.
Podczas gdy JOIN służy do wybierania wierszy z każdej tabeli, za pomocą metody wewnętrznej, zewnętrznej, lewej lub prawej.
Zobacz tutaj i tutaj . Jest lepsze wyjaśnienie z przykładami.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 14:22:44
Operacja Union jest połączonym wynikiem agregatu pionowego wierszy, Operacja Unii jest połączonym wynikiem agregatu poziomego kolumn.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-29 05:22:18
Lubię myśleć o ogólnej różnicy jako o:
- dołącza do tabel
- UNION (et all) łączy zapytania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-04 01:09:30