SQL JOIN
SQL Join se používá k načítání nebo kombinování dat (řádků nebo sloupců) ze dvou nebo více tabulek na základě definovaných podmínek.
Tabulka 1: Objednávka
Číslo objednávky | Zákaznické identifikační číslo | Název objednávky | Jméno výrobku |
---|---|---|---|
12025 | 101 | Petr | ABC |
12030 | 105 | Roberte | XYX |
12032 | 110 | James | XYZ |
12034 | 115 | Andrew | PQR |
12035 | 120 | Mathew | AAA |
Tabulka 2: Zákazník
Zákaznické identifikační číslo | Jméno zákazníka | Země |
---|---|---|
100 | Chaotický | Maxico |
101 | princ | Tchaj-wan |
103 | Maria Fernandezová | krocan |
105 | Jasmín | Paříž |
110 | Faf Weasel | Indonésie |
120 | Římská raketa | Rusko |
Nyní máme dva stoly Objednat a Zákazník . Tady je Zákaznické identifikační číslo sloupec společný v obou tabulkách. Napište tedy dotaz SQL pro definování obecného vztahu pro výběr záznamů shod z obou tabulek.
Select Order.OrderID, Customer.CustomerName, Customer.Country, Order.ProductName from Order INNER JOIN Customer ON Order.CustomerID = Customer.CustomerID;
Po provedení výše uvedeného SQL dotazy, vytvoří následující výstup:
Číslo objednávky | Jméno zákazníka | Země | Jméno výrobku |
---|---|---|---|
12025 | princ | Tchaj-wan | ABC |
12030 | Jasmín | Paříž | XYX |
12032 | Faf Weasel | Indonésie | XYZ |
12035 | Římská raketa | Rusko | AAA |
Typy SQL Join
V SQL se používají různé typy spojení:
- Vnitřní spojení / Jednoduché spojení
- Levé vnější spojení / Levé spojení
- Pravé vnější spojení / Pravé spojení
- Úplné vnější spojení
- Křížové spojení
- Vlastní připojení
Vnitřní spojení
Vnitřní spojení se používá k výběru všech odpovídajících řádků nebo sloupců v obou tabulkách nebo pokud je definovaná podmínka 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;
Vnitřní spojení můžeme reprezentovat pomocí Vennova diagramu takto:
Tabulka 1: Studenti
Student_ID | Jméno studenta | Předmět | UčitelID |
---|---|---|---|
101 | Alexandra | Počítačová věda | T201 |
102 | Charles | Ekonomika | T202 |
103 | Tom Cruise | Počítačová věda | T201 |
104 | Aaron Finch | Elektronika | T203 |
105 | Seed Bajoff | Web design | T204 |
106 | Kryštof | Anglická literatura | T205 |
107 | Džínovina | Módní návrhář | T206 |
Tabulka 2: Učitelé
UčitelID | Jméno učitele | E-mail učitele |
---|---|---|
T201 | Pane Davise | [e-mail chráněný] |
T202 | paní Jonasová | [e-mail chráněný] |
T201 | Pane Davise | [e-mail chráněný] |
T204 | paní Lopezová | [e-mail chráněný] |
T205 | paní Wileyová | [e-mail chráněný] |
T206 | mr Bean | [e-mail chráněný] |
Máme dvě tabulky: Studenti a Učitelé Tabulky. Pojďme napsat SQL dotazy pro připojení k tabulce pomocí VNITŘNÍ SPOJENÍ jak následuje:
Select Student_ID, StudentName, TeacherName, TeacherEmail FROM Students INNER JOIN Teachers ON Students.TeacherID = Teachers.TeacherID;
Po provedení dotazu vytvoří níže uvedenou tabulku.
Přirozené spojení
Je to typ vnitřního typu, který spojuje dvě nebo více tabulek na základě stejného názvu sloupce a v obou tabulkách má stejný datový typ.
Syntax:
Select * from tablename1 Natural JOIN tablename_2;
Máme dvě tabulky: Studenti a Učitelé Tabulky. Pojďme napsat SQL dotazy pro připojení k tabulce pomocí Přírodní JOIN jak následuje:
Select * from Students Natural JOIN Teachers;
Po provedení výše uvedeného dotazu vytvoří následující tabulku.
PŘIPOJIT SE VLEVO
The PŘIPOJIT SE VLEVO se používá k načtení všech záznamů z levé tabulky (tabulka1) a odpovídajících řádků nebo sloupců z pravé tabulky (tabulka2). Pokud obě tabulky neobsahují žádné odpovídající řádky nebo sloupce, vrátí 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;
Levé spojení můžeme také reprezentovat pomocí Vennova diagramu, a to následovně:
Poznámka: V některých databázích je LEFT JOIN také známý jako LEFT OUTER JOIN.
Tabulka 1: Podrobnosti o produktu
ProductID | Jméno výrobku | Množství |
---|---|---|
Pro101 | Přenosný počítač | 56 000 |
Pro102 | mobilní, pohybliví | 38 000 |
Pro103 | Sluchátka | 5000 |
Pro104 | Televize | 25 000 |
Pro105 | iPad | 60 000 |
Tabulka 2: Podrobnosti o zákazníkovi
pružinové moduly
Jméno zákazníka | CustomerAddress | CustomerAge | ProductID |
---|---|---|---|
Martin Guptill | San Francisco, USA | 26 | Pro101 |
James | Austrálie | 29 | Pro103 |
Ambati Williamson | Nový Zéland | 27 | Pro102 |
Jofra Archer | Jižní Afrika | 24 | Pro105 |
Kate Wiley | Austrálie | dvacet | Pro103 |
Máme dvě tabulky: Detaily produktu a Customer_Details Tabulky. Pojďme napsat SQL dotazy pro připojení k tabulce pomocí PŘIPOJIT SE VLEVO jak následuje:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Po provedení dotazu vytvoří následující tabulku.
RIGHT JOIN nebo RIGHT Outer JOIN:
The SPRÁVNÉ PŘIPOJENÍ SE se používá k načtení všech záznamů z pravé tabulky (tabulka2) a odpovídajících řádků nebo sloupců z levé tabulky (tabulka1). Pokud obě tabulky neobsahují žádné odpovídající řádky nebo sloupce, vrátí 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é spojení můžeme také reprezentovat pomocí Vennova diagramu, a to následovně:
Poznámka: V některých databázích je RIGHT JOIN také známé jako RIGHT OUTER JOIN.
Tabulka 1: Podrobnosti o produktu
ID | Jméno výrobku | Množství |
---|---|---|
Pro101 | Přenosný počítač | 56 000 |
Pro102 | mobilní, pohybliví | 38 000 |
Pro103 | Sluchátka | 5000 |
Pro104 | Televize | 25 000 |
Pro105 | iPad | 60 000 |
Tabulka 2: Podrobnosti o zákazníkovi
Jméno zákazníka | CustomerAddress | CustomerAge | ProductID |
---|---|---|---|
Martin Guptill | San Francisco, USA | 26 | Pro101 |
James | Austrálie | 29 | Pro103 |
Ambati Williamson | Nový Zéland | 27 | Pro102 |
Jofra Archer | Jižní Afrika | 24 | Pro105 |
Znamení | Anglie | 29 | Pro107 |
Morgan | Anglie | dvacet | Pro108 |
Máme dvě tabulky: Detaily produktu a Customer_Details Tabulky. Pojďme napsat SQL dotazy pro připojení k tabulce pomocí SPRÁVNÉ PŘIPOJENÍ SE jak následuje:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Po provedení dotazu vytvoří níže uvedenou tabulku.
FULL JOIN nebo FULL Outer JOIN:
Je to kombinace výsledků obou PŘIPOJIT SE VLEVO a SPRÁVNÉ PŘIPOJENÍ SE . Spojené tabulky vrátí všechny záznamy z obou tabulek a pokud v tabulce nejsou nalezeny žádné shody, umístí hodnotu NULL. Nazývá se také a ÚPLNÉ VNĚJŠÍ PŘIPOJENÍ .
Syntax:
Select column_1, column_2, column(s) FROM table_1 FULL JOIN table_2 ON table_1.column_name = table_2.column_name;
Nebo, ÚPLNÉ VNĚJŠÍ PŘIPOJENÍ
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é vnější spojení můžeme také znázornit prostřednictvím Vennova diagramu, a to následovně:
Tabulka 1: Podrobnosti o produktu
ID | Jméno výrobku | Množství |
---|---|---|
Pro101 | Přenosný počítač | 56 000 |
Pro102 | mobilní, pohybliví | 38 000 |
Pro103 | Sluchátka | 5000 |
Pro104 | Televize | 25 000 |
Pro105 | iPad | 60 000 |
Tabulka 2: Podrobnosti o zákazníkovi
Jméno zákazníka | CustomerAddress | CustomerAge | ProductID |
---|---|---|---|
Martin Guptill | San Francisco, USA | 26 | Pro101 |
James | Austrálie | 29 | Pro103 |
Ambati Williamson | Nový Zéland | 27 | Pro102 |
Jofra Archer | Jižní Afrika | 24 | Pro105 |
Znamení | Anglie | 29 | Pro107 |
Morgan | Anglie | dvacet | Pro108 |
Máme dvě tabulky: Detaily produktu a Customer_Details Tabulky. Pojďme napsat SQL dotazy pro připojení k tabulce pomocí PLNÝ PŘIPOJTE SE následovně:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details FULL JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Po provedení dotazu vytvoří níže uvedenou tabulku.
Poznámka: MySQL nepodporuje koncepty FULL JOIN, takže ke kombinaci obou tabulek můžeme použít klauzuli UNION ALL.
Zde je syntaxe pro UNION VŠECHNY Doložka ke spojení tabulek.
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
KŘÍŽOVÉ PŘIPOJENÍ
Je také známý jako KARTÉZSKÉ PŘIPOJENÍ , která vrací kartézský součin dvou nebo více spojených tabulek. The KŘÍŽOVÉ PŘIPOJENÍ vytvoří tabulku, která sloučí každý řádek z první tabulky s každým druhým řádkem tabulky. Do CROSS JOIN není nutné zahrnout žádnou podmínku.
Syntax:
Select * from table_1 cross join table_2;
Nebo,
Select column1, column2, column3 FROM table_1, table_2;
Tabulka 1: Podrobnosti o produktu
ID | Jméno výrobku | Množství |
---|---|---|
Pro101 | Přenosný počítač | 56 000 |
Pro102 | mobilní, pohybliví | 38 000 |
Pro103 | Sluchátka | 5000 |
Pro104 | Televize | 25 000 |
Pro105 | iPad | 60 000 |
Tabulka 2: Podrobnosti o zákazníkovi
Jméno zákazníka | CustomerAddress | CustomerAge | ProductID |
---|---|---|---|
Martin Guptill | San Francisco, USA | 26 | Pro101 |
James | Austrálie | 29 | Pro103 |
Ambati Williamson | Nový Zéland | 27 | Pro102 |
Jofra Archer | Jižní Afrika | 24 | Pro105 |
Znamení | Anglie | 29 | Pro107 |
Morgan | Anglie | dvacet | Pro108 |
Máme dvě tabulky: Detaily produktu a Customer_Details Tabulky. Pojďme napsat SQL dotazy pro připojení k tabulce pomocí PLNÝ PŘIPOJTE SE následovně:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details, Customer_Details;
Po provedení dotazu vytvoří níže uvedenou tabulku.
SEBE PŘIPOJTE SE
Je to SELF JOIN, který se používá k vytvoření tabulky spojením sebe sama, protože tam byly dva stoly. Umožňuje dočasné pojmenování alespoň jedné tabulky v příkazu SQL.
Syntax:
Select column1, column2, column(s) FROM table_1 Tbl1, table_2 Tbl2 WHERE condition;
stůl 1 a Tbl2 jsou dva různé aliasy tabulky pro stejnou tabulku.
Tabulka 1: Podrobnosti o produktu
ID | Jméno výrobku | Množství |
---|---|---|
Pro101 | Přenosný počítač | 56 000 |
Pro102 | mobilní, pohybliví | 38 000 |
Pro103 | Sluchátka | 5000 |
Pro104 | Televize | 25 000 |
Pro105 | iPad | 60 000 |
Pojďme napsat SQL dotazy pro připojení k tabulce pomocí SEBE PŘIPOJTE SE jak následuje:
Java synchronizace
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;>