SQL JOIN
SQL Join sa používa na načítanie alebo kombinovanie údajov (riadkov alebo stĺpcov) z dvoch alebo viacerých tabuliek na základe definovaných podmienok.
Tabuľka 1: Objednávka
Číslo objednávky | CustomerID | OrderName | Meno Produktu |
---|---|---|---|
12025 | 101 | Peter | ABC |
12030 | 105 | Robert | XYX |
12032 | 110 | James | XYZ |
12034 | 115 | Andrew | PQR |
12035 | 120 | Mathew | AAA |
Tabuľka 2: Zákazník
CustomerID | Meno zákazníka | Krajina |
---|---|---|
100 | chaotický | Maxico |
101 | Princ | Taiwan |
103 | Mária Fernandezová | Turecko |
105 | Jasmine | Paríž |
110 | Faf Weasel | Indonézia |
120 | Rímska raketa | Rusko |
Teraz máme dva stoly objednať a Zákazník . Existuje a CustomerID stĺpec spoločný v oboch tabuľkách. Takže napíšte dotaz SQL na definovanie všeobecného vzťahu na výber záznamov zhody z oboch tabuliek.
Select Order.OrderID, Customer.CustomerName, Customer.Country, Order.ProductName from Order INNER JOIN Customer ON Order.CustomerID = Customer.CustomerID;
Po vykonaní vyššie uvedeného SQL dotazov, vytvára nasledujúci výstup:
Číslo objednávky | Meno zákazníka | Krajina | Meno Produktu |
---|---|---|---|
12025 | Princ | Taiwan | ABC |
12030 | Jasmine | Paríž | XYX |
12032 | Faf Weasel | Indonézia | XYZ |
12035 | Rímska raketa | Rusko | AAA |
Typy spojenia SQL
V SQL sa používajú rôzne typy spojení:
- Vnútorné spojenie / jednoduché spojenie
- Ľavé vonkajšie spojenie / Ľavé spojenie
- Pravé vonkajšie spojenie / pravé spojenie
- Úplné vonkajšie spojenie
- Cross Join
- Vlastné pripojenie
Vnútorné spojenie
Vnútorné spojenie sa používa na výber všetkých zodpovedajúcich riadkov alebo stĺpcov v oboch tabuľkách, alebo pokiaľ je definovaná podmienka platná v SQL.
Syntax:
Select column_1, column_2, column_3 FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
Vnútorné spojenie môžeme reprezentovať cez Vennov diagram takto:
Tabuľka 1: Študenti
Študentská karta | Meno študenta | Predmet | Učiteľ ID |
---|---|---|---|
101 | Alexandra | Počítačová veda | T201 |
102 | Charles | Ekonomika | T202 |
103 | Tom Cruise | Počítačová veda | T201 |
104 | Aaron Finch | Elektronika | T203 |
105 | Seed Bajoff | Tvorba webu | T204 |
106 | Christopher | Anglická literatúra | T205 |
107 | Denim | Módny návrhár | T206 |
Tabuľka 2: Učitelia
Učiteľ ID | Meno učiteľa | E-mail učiteľa |
---|---|---|
T201 | pán Davis | [e-mail chránený] |
T202 | Pani Jonasová | [e-mail chránený] |
T201 | pán Davis | [e-mail chránený] |
T204 | Pani Lopezová | [e-mail chránený] |
T205 | Pani Wileyová | [e-mail chránený] |
T206 | MR Bean | [e-mail chránený] |
Máme dve tabuľky: Študenti a Učitelia Tabuľky. Napíšme SQL dotazy na pripojenie k tabuľke pomocou VNÚTORNÉ SPOJENIE nasledovne:
Select Student_ID, StudentName, TeacherName, TeacherEmail FROM Students INNER JOIN Teachers ON Students.TeacherID = Teachers.TeacherID;
Po vykonaní dotazu vytvorí tabuľku nižšie.
Prirodzené spojenie
Je to typ vnútorného typu, ktorý spája dve alebo viac tabuliek na základe rovnakého názvu stĺpca a má rovnaký typ údajov prítomný v oboch tabuľkách.
Syntax:
Select * from tablename1 Natural JOIN tablename_2;
Máme dve tabuľky: Študenti a Učitelia Tabuľky. Napíšme SQL dotazy na pripojenie k tabuľke pomocou Prirodzené JOIN nasledovne:
Select * from Students Natural JOIN Teachers;
Po vykonaní vyššie uvedeného dotazu vytvorí nasledujúcu tabuľku.
ĽAVÉ PRIPOJENIE
The ĽAVÉ PRIPOJENIE sa používa na získanie všetkých záznamov z ľavej tabuľky (tabuľka1) a zhodných riadkov alebo stĺpcov z pravej tabuľky (tabuľka2). Ak obe tabuľky neobsahujú žiadne zhodné riadky alebo stĺpce, vráti hodnotu NULL.
Syntax:
Select column_1, column_2, column(s) FROM table_1 LEFT JOIN table_2 ON table_1.column_name = table_2.column_name;
Ľavé spojenie môžeme tiež reprezentovať cez Vennov diagram takto:
Poznámka: V niektorých databázach je LEFT JOIN známy aj ako LEFT OUTER JOIN.
Tabuľka 1: Podrobnosti o produkte
Identifikačné číslo produktu | Meno Produktu | Suma |
---|---|---|
Pro101 | laptop | 56 000 |
Pro102 | Mobilné | 38 000 |
Pro103 | Slúchadlá | 5000 |
Pro104 | Televízia | 25 000 |
Pro105 | iPad | 60 000 |
Tabuľka 2: Podrobnosti o zákazníkovi
príklad zoznamu v jave
Meno zákazníka | CustomerAddress | CustomerAge | Identifikačné číslo produktu |
---|---|---|---|
Martin Guptill | San Francisco, USA | 26 | Pro101 |
James | Austrália | 29 | Pro103 |
Ambati Williamson | Nový Zéland | 27 | Pro102 |
Jofra Archer | južná Afrika | 24 | Pro105 |
Kate Wiley | Austrália | dvadsať | Pro103 |
Máme dve tabuľky: Detaily produktu a Customer_Details Tabuľky. Napíšme SQL dotazy na pripojenie k tabuľke pomocou ĽAVÉ PRIPOJENIE nasledovne:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Po vykonaní dotazu vytvorí nasledujúcu tabuľku.
RIGHT JOIN alebo RIGHT Outer JOIN:
The SPRÁVNE PRIPOJTE SA sa používa na získanie všetkých záznamov z pravej tabuľky (tabuľka2) a zhodných riadkov alebo stĺpcov z ľavej tabuľky (tabuľka1). Ak obe tabuľky neobsahujú žiadne zhodné riadky alebo stĺpce, vráti hodnotu NULL.
Syntax:
Select column_1, column_2, column(s) FROM table_1 RIGHT JOIN table_2 ON table_1.column_name = table_2.column_name;
Pravé spojenie môžeme znázorniť aj prostredníctvom Vennovho diagramu takto:
Poznámka: V niektorých databázach je RIGHT JOIN známe aj ako RIGHT OUTER JOIN.
Tabuľka 1: Podrobnosti o produkte
ID | Meno Produktu | Suma |
---|---|---|
Pro101 | laptop | 56 000 |
Pro102 | Mobilné | 38 000 |
Pro103 | Slúchadlá | 5000 |
Pro104 | Televízia | 25 000 |
Pro105 | iPad | 60 000 |
Tabuľka 2: Podrobnosti o zákazníkovi
Meno zákazníka | CustomerAddress | CustomerAge | Identifikačné číslo produktu |
---|---|---|---|
Martin Guptill | San Francisco, USA | 26 | Pro101 |
James | Austrália | 29 | Pro103 |
Ambati Williamson | Nový Zéland | 27 | Pro102 |
Jofra Archer | južná Afrika | 24 | Pro105 |
Omen | Anglicko | 29 | Pro107 |
Morgan | Anglicko | dvadsať | Pro108 |
Máme dve tabuľky: Detaily produktu a Customer_Details Tabuľky. Napíšme SQL dotazy na pripojenie k tabuľke pomocou SPRÁVNE PRIPOJTE SA nasledovne:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Po vykonaní dotazu vytvorí tabuľku nižšie.
FULL JOIN alebo FULL Outer JOIN:
Ide o kombináciu výsledkov oboch ĽAVÉ PRIPOJENIE a SPRÁVNE PRIPOJTE SA . Spojené tabuľky vrátia všetky záznamy z oboch tabuliek a ak sa v tabuľke nenájdu žiadne zhody, umiestni NULL. Nazýva sa aj a ÚPLNÉ VONKAJŠIE SPOJENIE .
Syntax:
obsahuje python
Select column_1, column_2, column(s) FROM table_1 FULL JOIN table_2 ON table_1.column_name = table_2.column_name;
alebo ÚPLNÉ VONKAJŠIE SPOJENIE
Select column_1, column_2, column(s) FROM table_1 FULL OUTER JOIN table_2 ON table_1.column_name = table_2.column_name;
Úplné vonkajšie spojenie môžeme tiež znázorniť cez Vennov diagram takto:
Tabuľka 1: Podrobnosti o produkte
ID | Meno Produktu | Suma |
---|---|---|
Pro101 | laptop | 56 000 |
Pro102 | Mobilné | 38 000 |
Pro103 | Slúchadlá | 5000 |
Pro104 | Televízia | 25 000 |
Pro105 | iPad | 60 000 |
Tabuľka 2: Podrobnosti o zákazníkovi
Meno zákazníka | CustomerAddress | CustomerAge | Identifikačné číslo produktu |
---|---|---|---|
Martin Guptill | San Francisco, USA | 26 | Pro101 |
James | Austrália | 29 | Pro103 |
Ambati Williamson | Nový Zéland | 27 | Pro102 |
Jofra Archer | južná Afrika | 24 | Pro105 |
Omen | Anglicko | 29 | Pro107 |
Morgan | Anglicko | dvadsať | Pro108 |
Máme dve tabuľky: Detaily produktu a Customer_Details Tabuľky. Napíšme SQL dotazy na pripojenie k tabuľke pomocou PLNÝ PRIPOJTE SA nasledovne:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details FULL JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Po vykonaní dotazu vytvorí tabuľku nižšie.
Poznámka: MySQL nepodporuje koncepty FULL JOIN, takže na kombináciu oboch tabuliek môžeme použiť klauzulu UNION ALL.
Tu je syntax pre UNION VŠETKO Doložka na spojenie tabuliek.
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID UNION ALL Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details RIGHT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID
KRÍŽOVÉ PRIPOJENIE
Je tiež známy ako KARTÉZSKÉ PRIPOJENIE , ktorý vráti karteziánsky súčin dvoch alebo viacerých spojených tabuliek. The KRÍŽOVÉ PRIPOJENIE vytvorí tabuľku, ktorá zlúči každý riadok z prvej tabuľky s každým druhým riadkom tabuľky. Do CROSS JOIN nie je potrebné zahrnúť žiadnu podmienku.
Syntax:
Select * from table_1 cross join table_2;
alebo
Select column1, column2, column3 FROM table_1, table_2;
Tabuľka 1: Podrobnosti o produkte
ID | Meno Produktu | Suma |
---|---|---|
Pro101 | laptop | 56 000 |
Pro102 | Mobilné | 38 000 |
Pro103 | Slúchadlá | 5000 |
Pro104 | Televízia | 25 000 |
Pro105 | iPad | 60 000 |
Tabuľka 2: Podrobnosti o zákazníkovi
Meno zákazníka | CustomerAddress | CustomerAge | Identifikačné číslo produktu |
---|---|---|---|
Martin Guptill | San Francisco, USA | 26 | Pro101 |
James | Austrália | 29 | Pro103 |
Ambati Williamson | Nový Zéland | 27 | Pro102 |
Jofra Archer | južná Afrika | 24 | Pro105 |
Omen | Anglicko | 29 | Pro107 |
Morgan | Anglicko | dvadsať | Pro108 |
Máme dve tabuľky: Detaily produktu a Customer_Details Tabuľky. Napíšme SQL dotazy na pripojenie k tabuľke pomocou PLNÝ PRIPOJTE SA nasledovne:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details, Customer_Details;
Po vykonaní dotazu vytvorí tabuľku nižšie.
SEBA PRIPOJTE SA
Je to SELF JOIN, ktorý sa používa na vytvorenie tabuľky spojením, pretože existovali dve tabuľky. Umožňuje dočasné pomenovanie aspoň jednej tabuľky v príkaze SQL.
Syntax:
Select column1, column2, column(s) FROM table_1 Tbl1, table_2 Tbl2 WHERE condition;
stôl 1 a Tbl2 sú dva rôzne aliasy tabuľky pre tú istú tabuľku.
Tabuľka 1: Podrobnosti o produkte
ID | Meno Produktu | Suma |
---|---|---|
Pro101 | laptop | 56 000 |
Pro102 | Mobilné | 38 000 |
Pro103 | Slúchadlá | 5000 |
Pro104 | Televízia | 25 000 |
Pro105 | iPad | 60 000 |
Napíšme SQL dotazy na pripojenie k tabuľke pomocou SEBA PRIPOJTE SA nasledovne:
Select TB.ID, TB.ProductName FROM Product_Details TB, Product_Details TB2 WHERE TB.AMOUNT <tb2.amount; < pre> <p>After executing the query, it produces the below table. </p> <img src="//techcodeview.com/img/sql-tutorial/44/types-sql-join-12.webp" alt="Types of SQL JOIN"> <hr></tb2.amount;>