SQL JOIN
SQL Join se uporablja za pridobivanje ali združevanje podatkov (vrstic ali stolpcev) iz dveh ali več tabel na podlagi definiranih pogojev.
Tabela 1: Vrstni red
Številka naročila | Identifikacijska številka stranke | Ime naročila | Ime izdelka |
---|---|---|---|
12025 | 101 | Peter | ABC |
12030 | 105 | Robert | XYX |
12032 | 110 | James | XYZ |
12034 | 115 | Andrej | PQR |
12035 | 120 | Matej | AAA |
Tabela 2: Stranka
Identifikacijska številka stranke | Ime stranke | Država |
---|---|---|
100 | Neurejeno | Maxico |
101 | princ | Tajvan |
103 | Maria Fernandez | puran |
105 | Jasmine | Pariz |
110 | Faf Weasel | Indonezija |
120 | Rimska raketa | Rusija |
Zdaj imamo dve mizi naročilo in Stranka . Obstaja a Identifikacijska številka stranke skupen stolpec v obeh tabelah. Torej, napišite poizvedbo SQL, da definirate splošno razmerje za izbiro zapisov ujemanj iz obeh tabel.
Select Order.OrderID, Customer.CustomerName, Customer.Country, Order.ProductName from Order INNER JOIN Customer ON Order.CustomerID = Customer.CustomerID;
Po izvedbi zgoraj navedenega SQL poizvedbe, proizvede naslednje rezultate:
Številka naročila | Ime stranke | Država | Ime izdelka |
---|---|---|---|
12025 | princ | Tajvan | ABC |
12030 | Jasmine | Pariz | XYX |
12032 | Faf Weasel | Indonezija | XYZ |
12035 | Rimska raketa | Rusija | AAA |
Vrste združevanja SQL
V SQL se uporabljajo različne vrste združevanj:
- Notranji spoj / preprost spoj
- Levi zunanji spoj / levi spoj
- Desni zunanji spoj / desni spoj
- Popoln zunanji spoj
- Cross Join
- Samopridruži se
Notranja pridružitev
Notranje združevanje se uporablja za izbiro vseh ujemajočih se vrstic ali stolpcev v obeh tabelah ali dokler je definiran pogoj veljaven v SQL.
Sintaksa:
Select column_1, column_2, column_3 FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
Notranji spoj lahko predstavimo skozi Vennov diagram, kot sledi:
Tabela 1: Študenti
Študent_ID | Študentsko ime | Predmet | ID učitelja |
---|---|---|---|
101 | Aleksandra | Računalništvo | T201 |
102 | Charles | Ekonomija | T202 |
103 | Tom Cruise | Računalništvo | T201 |
104 | Aaron Finch | elektronika | T203 |
105 | Seme Bajoff | Spletno oblikovanje | T204 |
106 | Christopher | Angleška literatura | T205 |
107 | Denim | Modni oblikovalec | T206 |
Tabela 2: Učitelji
ID učitelja | Ime učitelja | E-pošta učitelja |
---|---|---|
T201 | G. Davis | [e-pošta zaščitena] |
T202 | Gospa Jonas | [e-pošta zaščitena] |
T201 | G. Davis | [e-pošta zaščitena] |
T204 | Gospa Lopez | [e-pošta zaščitena] |
T205 | Gospa Wiley | [e-pošta zaščitena] |
T206 | gospod Bean | [e-pošta zaščitena] |
Imamo dve tabeli: Študenti in Učitelji Mize. Napišimo poizvedbe SQL za pridružitev tabeli z uporabo NOTRANJI SPOJ kot sledi:
Select Student_ID, StudentName, TeacherName, TeacherEmail FROM Students INNER JOIN Teachers ON Students.TeacherID = Teachers.TeacherID;
Po izvedbi poizvedbe ustvari spodnjo tabelo.
Naravna pridružitev
Je vrsta notranjega tipa, ki združuje dve ali več tabel na podlagi istega imena stolpca in ima isti podatkovni tip, prisoten v obeh tabelah.
Sintaksa:
Select * from tablename1 Natural JOIN tablename_2;
Imamo dve tabeli: Študenti in Učitelji Mize. Napišimo poizvedbe SQL za pridružitev tabeli z uporabo Naravni JOIN kot sledi:
Select * from Students Natural JOIN Teachers;
Po izvedbi zgornje poizvedbe izdela naslednjo tabelo.
LEVO PRIDRUŽI SE
The LEVO PRIDRUŽI SE se uporablja za pridobivanje vseh zapisov iz leve tabele (tabela1) in ustreznih vrstic ali stolpcev iz desne tabele (tabela2). Če obe tabeli ne vsebujeta ujemajočih se vrstic ali stolpcev, vrne NULL.
Sintaksa:
Select column_1, column_2, column(s) FROM table_1 LEFT JOIN table_2 ON table_1.column_name = table_2.column_name;
Levi spoj lahko predstavimo tudi z Vennovim diagramom, kot sledi:
Opomba: V nekaterih bazah podatkov je LEFT JOIN znan tudi kot LEFT OUTER JOIN.
Tabela 1: Product_Details
ProductID | Ime izdelka | Znesek |
---|---|---|
Pro101 | Prenosni računalnik | 56000 |
Pro102 | Mobilni | 38000 |
Pro103 | Slušalke | 5000 |
Pro104 | televizija | 25000 |
Pro105 | iPad | 60000 |
Tabela 2: Customer_Details
polna oblika
Ime stranke | Naslov stranke | CustomerAge | ProductID |
---|---|---|---|
Martin Guptill | San Francisco, ZDA | 26 | Pro101 |
James | Avstralija | 29 | Pro103 |
Ambati Williamson | Nova Zelandija | 27 | Pro102 |
Jofra Archer | Južna Afrika | 24 | Pro105 |
Kate Wiley | Avstralija | dvajset | Pro103 |
Imamo dve tabeli: Podrobnosti produkta in Customer_Details Mize. Napišimo poizvedbe SQL za pridružitev tabeli z uporabo LEVO PRIDRUŽI SE kot sledi:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Po izvedbi poizvedbe izdela naslednjo tabelo.
RIGHT JOIN ali RIGHT Outer JOIN:
The PRAV PRIDRUŽI SE se uporablja za pridobivanje vseh zapisov iz desne tabele (tabela2) in ustreznih vrstic ali stolpcev iz leve tabele (tabela1). Če obe tabeli ne vsebujeta ujemajočih se vrstic ali stolpcev, vrne NULL.
Sintaksa:
Select column_1, column_2, column(s) FROM table_1 RIGHT JOIN table_2 ON table_1.column_name = table_2.column_name;
Desni spoj lahko predstavimo tudi z Vennovim diagramom, kot sledi:
Opomba: V nekaterih zbirkah podatkov je RIGHT JOIN znan tudi kot RIGHT OUTER JOIN.
Tabela 1: Product_Details
ID | Ime izdelka | Znesek |
---|---|---|
Pro101 | Prenosni računalnik | 56000 |
Pro102 | Mobilni | 38000 |
Pro103 | Slušalke | 5000 |
Pro104 | televizija | 25000 |
Pro105 | iPad | 60000 |
Tabela 2: Customer_Details
Ime stranke | Naslov stranke | CustomerAge | ProductID |
---|---|---|---|
Martin Guptill | San Francisco, ZDA | 26 | Pro101 |
James | Avstralija | 29 | Pro103 |
Ambati Williamson | Nova Zelandija | 27 | Pro102 |
Jofra Archer | Južna Afrika | 24 | Pro105 |
Omen | Anglija | 29 | Pro107 |
Morgan | Anglija | dvajset | Pro108 |
Imamo dve tabeli: Podrobnosti produkta in Customer_Details Mize. Napišimo poizvedbe SQL za pridružitev tabeli z uporabo PRAV PRIDRUŽI SE kot sledi:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Po izvedbi poizvedbe ustvari spodnjo tabelo.
FULL JOIN ali FULL Outer JOIN:
Je kombinacija rezultatov obeh LEVO PRIDRUŽI SE in PRAV PRIDRUŽI SE . Združene tabele vrnejo vse zapise iz obeh tabel in če v tabeli ni najdenih ujemanj, postavi NULL. Imenuje se tudi a POLNI ZUNANJI SPOJ .
Sintaksa:
Select column_1, column_2, column(s) FROM table_1 FULL JOIN table_2 ON table_1.column_name = table_2.column_name;
ali pa POLNI ZUNANJI SPOJ
Select column_1, column_2, column(s) FROM table_1 FULL OUTER JOIN table_2 ON table_1.column_name = table_2.column_name;
Celotno zunanjo povezavo lahko predstavimo tudi z Vennovim diagramom, kot sledi:
Tabela 1: Product_Details
ID | Ime izdelka | Znesek |
---|---|---|
Pro101 | Prenosni računalnik | 56000 |
Pro102 | Mobilni | 38000 |
Pro103 | Slušalke | 5000 |
Pro104 | televizija | 25000 |
Pro105 | iPad | 60000 |
Tabela 2: Customer_Details
inicializirati seznam python
Ime stranke | Naslov stranke | CustomerAge | ProductID |
---|---|---|---|
Martin Guptill | San Francisco, ZDA | 26 | Pro101 |
James | Avstralija | 29 | Pro103 |
Ambati Williamson | Nova Zelandija | 27 | Pro102 |
Jofra Archer | Južna Afrika | 24 | Pro105 |
Omen | Anglija | 29 | Pro107 |
Morgan | Anglija | dvajset | Pro108 |
Imamo dve tabeli: Podrobnosti produkta in Customer_Details Mize. Napišimo poizvedbe SQL za pridružitev tabeli z uporabo POLN PRIDRUŽI SE na naslednji način:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details FULL JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Po izvedbi poizvedbe ustvari spodnjo tabelo.
Opomba: MySQL ne podpira konceptov FULL JOIN, zato lahko uporabimo klavzulo UNION ALL za združevanje obeh tabel.
Tukaj je sintaksa za UNIJA VSE Klavzula za združevanje tabel.
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
KRIŽNI SPOJ
Znan je tudi kot KARTEZIJSKI SPOJ , ki vrne kartezični produkt dveh ali več združenih tabel. The KRIŽNI SPOJ izdela tabelo, ki združi vsako vrstico iz prve tabele z vsako drugo vrstico tabele. V CROSS JOIN ni treba vključiti nobenega pogoja.
Sintaksa:
Select * from table_1 cross join table_2;
ali pa
Select column1, column2, column3 FROM table_1, table_2;
Tabela 1: Product_Details
ID | Ime izdelka | Znesek |
---|---|---|
Pro101 | Prenosni računalnik | 56000 |
Pro102 | Mobilni | 38000 |
Pro103 | Slušalke | 5000 |
Pro104 | televizija | 25000 |
Pro105 | iPad | 60000 |
Tabela 2: Customer_Details
Ime stranke | Naslov stranke | CustomerAge | ProductID |
---|---|---|---|
Martin Guptill | San Francisco, ZDA | 26 | Pro101 |
James | Avstralija | 29 | Pro103 |
Ambati Williamson | Nova Zelandija | 27 | Pro102 |
Jofra Archer | Južna Afrika | 24 | Pro105 |
Omen | Anglija | 29 | Pro107 |
Morgan | Anglija | dvajset | Pro108 |
Imamo dve tabeli: Podrobnosti produkta in Customer_Details Mize. Napišimo poizvedbe SQL za pridružitev tabeli z uporabo POLN PRIDRUŽI SE na naslednji način:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details, Customer_Details;
Po izvedbi poizvedbe ustvari spodnjo tabelo.
PRIDRUŽITE SE SAMI
To je SELF JOIN, ki se uporablja za ustvarjanje tabele z združevanjem same sebe, saj sta bili tabeli dve. Omogoča začasno poimenovanje vsaj ene tabele v stavku SQL.
Sintaksa:
Select column1, column2, column(s) FROM table_1 Tbl1, table_2 Tbl2 WHERE condition;
Tabela 1 in Tbl2 sta dva različna vzdevka tabele za isto tabelo.
Tabela 1: Product_Details
ID | Ime izdelka | Znesek |
---|---|---|
Pro101 | Prenosni računalnik | 56000 |
Pro102 | Mobilni | 38000 |
Pro103 | Slušalke | 5000 |
Pro104 | televizija | 25000 |
Pro105 | iPad | 60000 |
Napišimo poizvedbe SQL za pridružitev tabeli z uporabo PRIDRUŽITE SE SAMI kot sledi:
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;>