SQL JOIN
SQL savienojumu izmanto, lai iegūtu vai apvienotu datus (rindas vai kolonnas) no divām vai vairākām tabulām, pamatojoties uz definētajiem nosacījumiem.
1. tabula. Pasūtījums
Pasūtījuma ID | Klienta ID | PasūtījumaNosaukums | Produkta nosaukums |
---|---|---|---|
12025 | 101 | Pēteris | ABC |
12030 | 105 | Roberts | XYX |
12032 | 110 | Džeimss | XYZ |
12034 | 115 | Endrjū | PQR |
12035 | 120 | Metjū | AAA |
2. tabula. Klients
Klienta ID | Klienta vārds | Valsts |
---|---|---|
100 | Nekārtīgs | Maxico |
101 | Princis | Taivāna |
103 | Marija Fernandesa | Turcija |
105 | Jasmīns | Parīze |
110 | Fafs zebiekste | Indonēzija |
120 | Romas raķete | Krievija |
Tagad mums ir divi galdi Pasūtiet un Klients . Tur ir Klienta ID abās tabulās kopīga kolonna. Tātad, ierakstiet SQL vaicājumu, lai definētu vispārīgās attiecības, lai atlasītu atbilstības ierakstus no abām tabulām.
Select Order.OrderID, Customer.CustomerName, Customer.Country, Order.ProductName from Order INNER JOIN Customer ON Order.CustomerID = Customer.CustomerID;
Pēc iepriekš minētā izpildes SQL vaicājumus, tas rada šādu izvadi:
Pasūtījuma ID | Klienta vārds | Valsts | Produkta nosaukums |
---|---|---|---|
12025 | Princis | Taivāna | ABC |
12030 | Jasmīns | Parīze | XYX |
12032 | Fafs zebiekste | Indonēzija | XYZ |
12035 | Romas raķete | Krievija | AAA |
SQL pievienošanās veidi
SQL tiek izmantoti dažādi savienojumu veidi:
- Iekšējā pievienošanās / vienkārša pievienošanās
- Kreisais ārējais savienojums / kreisais savienojums
- Labais ārējais savienojums / labais savienojums
- Pilna ārējā pievienošanās
- Cross Join
- Pievienojies pats
Iekšējā pievienošanās
Iekšējais savienojums tiek izmantots, lai atlasītu visas atbilstošās rindas vai kolonnas abās tabulās vai tik ilgi, kamēr definētais nosacījums ir derīgs SQL.
Sintakse:
Select column_1, column_2, column_3 FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
Mēs varam attēlot iekšējo savienojumu, izmantojot Venna diagrammu, šādi:
1. tabula. Studenti
Studenta_ID | Studenta vārds | Priekšmets | Skolotāja ID |
---|---|---|---|
101 | Aleksandra | Datorzinātne | T201 |
102 | Čārlzs | Ekonomika | T202 |
103 | Toms Krūzs | Datorzinātne | T201 |
104 | Ārons Finčs | Elektronika | T203 |
105 | Sēklas Bajoff | Web dizains | T204 |
106 | Kristofers | Angļu literatūra | T205 |
107 | Džinss | Modes dizaineris | T206 |
2. tabula. Skolotāji
Skolotāja ID | Skolotāja Vārds | SkolotājaE-pasts |
---|---|---|
T201 | Deivisa kungs | [aizsargāts ar e-pastu] |
T202 | Jonas kundze | [aizsargāts ar e-pastu] |
T201 | Deivisa kungs | [aizsargāts ar e-pastu] |
T204 | Lopesas kundze | [aizsargāts ar e-pastu] |
T205 | Vīlijas kundze | [aizsargāts ar e-pastu] |
T206 | Bīna kungs | [aizsargāts ar e-pastu] |
Mums ir divas tabulas: Studenti un Skolotāji Tabulas. Rakstīsim SQL vaicājumus, lai pievienotos tabulai, izmantojot IEKŠĒJĀ PIEVIENOŠANĀS sekojoši:
Select Student_ID, StudentName, TeacherName, TeacherEmail FROM Students INNER JOIN Teachers ON Students.TeacherID = Teachers.TeacherID;
Pēc vaicājuma izpildes tiek izveidota tālāk redzamā tabula.
Dabiska pievienošanās
Tas ir iekšējā tipa veids, kas savieno divas vai vairākas tabulas, pamatojoties uz vienu un to pašu kolonnas nosaukumu, un abās tabulās ir viens un tas pats datu tips.
Sintakse:
Select * from tablename1 Natural JOIN tablename_2;
Mums ir divas tabulas: Studenti un Skolotāji Tabulas. Rakstīsim SQL vaicājumus, lai pievienotos tabulai, izmantojot Dabiski JOIN sekojoši:
Select * from Students Natural JOIN Teachers;
Pēc iepriekš minētā vaicājuma izpildes tiek izveidota šāda tabula.
PA kreisi PIEVIENOTIES
The PA kreisi PIEVIENOTIES tiek izmantots, lai izgūtu visus ierakstus no kreisās tabulas (tabula1) un atbilstošās rindas vai kolonnas no labās tabulas (tabula2). Ja abās tabulās nav nevienas atbilstošas rindas vai kolonnas, tā atgriež NULL.
Sintakse:
Select column_1, column_2, column(s) FROM table_1 LEFT JOIN table_2 ON table_1.column_name = table_2.column_name;
Mēs varam arī attēlot kreiso savienojumu, izmantojot Venn diagrammu, šādi:
Piezīme. Dažās datubāzēs LEFT JOIN sauc arī par LEFT OUTTER JOIN.
1. tabula: Produkta_detaļas
Produkta ID | Produkta nosaukums | Summa |
---|---|---|
Pro101 | Klēpjdators | 56 000 |
Pro102 | Mobilais | 38 000 |
Pro103 | Austiņas | 5000 |
Pro104 | Televīzija | 25 000 |
Pro105 | iPad | 60 000 |
2. tabula: Klienta_informācija
visas filmas neiespējamā misija
Klienta vārds | Klienta adrese | Klientu vecums | Produkta ID |
---|---|---|---|
Mārtiņš Guptils | Sanfrancisko, ASV | 26 | Pro101 |
Džeimss | Austrālija | 29 | Pro103 |
Ambati Viljamsons | Jaunzēlande | 27 | Pro102 |
Jofra Arčers | Dienvidāfrika | 24 | Pro105 |
Keita Vīlija | Austrālija | divdesmit | Pro103 |
Mums ir divas tabulas: Produkta_detaļas un Klienta_detaļas Tabulas. Rakstīsim SQL vaicājumus, lai pievienotos tabulai, izmantojot PA kreisi PIEVIENOTIES sekojoši:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Pēc vaicājuma izpildes tiek izveidota šāda tabula.
RIGHT JOIN vai RIGHT Outer JOIN:
The PAREIZI PIEVIENOJIES tiek izmantots, lai izgūtu visus ierakstus no labās tabulas (tabula2) un atbilstošās rindas vai kolonnas no kreisās tabulas (tabula1). Ja abās tabulās nav nevienas atbilstošas rindas vai kolonnas, tā atgriež NULL.
Sintakse:
Select column_1, column_2, column(s) FROM table_1 RIGHT JOIN table_2 ON table_1.column_name = table_2.column_name;
Mēs varam arī attēlot pareizo savienojumu, izmantojot Venna diagrammu, šādi:
Piezīme. Dažās datubāzēs RIGHT JOIN sauc arī par RIGHT OUTTER JOIN.
1. tabula: Produkta_detaļas
ID | Produkta nosaukums | Summa |
---|---|---|
Pro101 | Klēpjdators | 56 000 |
Pro102 | Mobilais | 38 000 |
Pro103 | Austiņas | 5000 |
Pro104 | Televīzija | 25 000 |
Pro105 | iPad | 60 000 |
2. tabula: Klienta_informācija
Klienta vārds | Klienta adrese | Klientu vecums | Produkta ID |
---|---|---|---|
Mārtiņš Guptils | Sanfrancisko, ASV | 26 | Pro101 |
Džeimss | Austrālija | 29 | Pro103 |
Ambati Viljamsons | Jaunzēlande | 27 | Pro102 |
Jofra Arčers | Dienvidāfrika | 24 | Pro105 |
Omen | Anglija | 29 | Pro107 |
Morgans | Anglija | divdesmit | Pro108 |
Mums ir divas tabulas: Produkta_detaļas un Klienta_detaļas Tabulas. Rakstīsim SQL vaicājumus, lai pievienotos tabulai, izmantojot PAREIZI PIEVIENOJIES sekojoši:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Pēc vaicājuma izpildes tiek izveidota tālāk redzamā tabula.
FULL JOIN vai FULL Outer JOIN:
Tas ir abu kombinācijas rezultātu kopums PA kreisi PIEVIENOTIES un PAREIZI PIEVIENOJIES . Savienotās tabulas atgriež visus ierakstus no abām tabulām, un, ja tabulā nav atrasta neviena atbilstība, tā ievieto NULL. To sauc arī par a PILNA ĀRĒJĀ PIEVIENOJUMI .
Sintakse:
Select column_1, column_2, column(s) FROM table_1 FULL JOIN table_2 ON table_1.column_name = table_2.column_name;
vai, PILNA ĀRĒJĀ PIEVIENOJUMI
Select column_1, column_2, column(s) FROM table_1 FULL OUTER JOIN table_2 ON table_1.column_name = table_2.column_name;
Mēs varam arī attēlot pilnu ārējo savienojumu, izmantojot Venn diagrammu, šādi:
1. tabula: Produkta_detaļas
ID | Produkta nosaukums | Summa |
---|---|---|
Pro101 | Klēpjdators | 56 000 |
Pro102 | Mobilais | 38 000 |
Pro103 | Austiņas | 5000 |
Pro104 | Televīzija | 25 000 |
Pro105 | iPad | 60 000 |
2. tabula: Klienta_informācija
Klienta vārds | Klienta adrese | Klientu vecums | Produkta ID |
---|---|---|---|
Mārtiņš Guptils | Sanfrancisko, ASV | 26 | Pro101 |
Džeimss | Austrālija | 29 | Pro103 |
Ambati Viljamsons | Jaunzēlande | 27 | Pro102 |
Jofra Arčers | Dienvidāfrika | 24 | Pro105 |
Omen | Anglija | 29 | Pro107 |
Morgans | Anglija | divdesmit | Pro108 |
Mums ir divas tabulas: Produkta_detaļas un Klienta_detaļas Tabulas. Rakstīsim SQL vaicājumus, lai pievienotos tabulai, izmantojot PILNĪGS PIEVIENOJIES šādi:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details FULL JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Pēc vaicājuma izpildes tiek izveidota tālāk redzamā tabula.
Piezīme: MySQL neatbalsta FULL JOIN koncepcijas, tāpēc mēs varam izmantot UNION ALL klauzulu, lai apvienotu abas tabulas.
Šeit ir sintakse SAVIENĪBA VISU Tabulu apvienošanas klauzula.
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
KRUSTS PIEVIENOTIES
Tas ir pazīstams arī kā KARTĒZIJAS PIEVIENOTIES , kas atgriež divu vai vairāku savienotu tabulu Dekarta reizinājumu. The KRUSTS PIEVIENOTIES izveido tabulu, kas apvieno katru rindu no pirmās tabulas ar katru otro tabulas rindu. Sadaļā CROSS JOIN nav jāiekļauj neviens nosacījums.
Sintakse:
np punkts
Select * from table_1 cross join table_2;
vai,
Select column1, column2, column3 FROM table_1, table_2;
1. tabula: Produkta_detaļas
ID | Produkta nosaukums | Summa |
---|---|---|
Pro101 | Klēpjdators | 56 000 |
Pro102 | Mobilais | 38 000 |
Pro103 | Austiņas | 5000 |
Pro104 | Televīzija | 25 000 |
Pro105 | iPad | 60 000 |
2. tabula: Klienta_informācija
Klienta vārds | Klienta adrese | Klientu vecums | Produkta ID |
---|---|---|---|
Mārtiņš Guptils | Sanfrancisko, ASV | 26 | Pro101 |
Džeimss | Austrālija | 29 | Pro103 |
Ambati Viljamsons | Jaunzēlande | 27 | Pro102 |
Jofra Arčers | Dienvidāfrika | 24 | Pro105 |
Omen | Anglija | 29 | Pro107 |
Morgans | Anglija | divdesmit | Pro108 |
Mums ir divas tabulas: Produkta_detaļas un Klienta_detaļas Tabulas. Rakstīsim SQL vaicājumus, lai pievienotos tabulai, izmantojot PILNĪGS PIEVIENOJIES šādi:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details, Customer_Details;
Pēc vaicājuma izpildes tiek izveidota tālāk redzamā tabula.
PAŠPIEVIENOJIES
Tā ir SELF JOIN, ko izmanto, lai izveidotu tabulu, savienojot sevi, jo bija divas tabulas. Tas nodrošina pagaidu nosaukšanu vismaz vienai tabulai SQL priekšrakstā.
Sintakse:
Select column1, column2, column(s) FROM table_1 Tbl1, table_2 Tbl2 WHERE condition;
1. tabula un Tbl2 ir divi dažādi tabulu aizstājvārdi vienai tabulai.
1. tabula: Produkta_detaļas
ID | Produkta nosaukums | Summa |
---|---|---|
Pro101 | Klēpjdators | 56 000 |
Pro102 | Mobilais | 38 000 |
Pro103 | Austiņas | 5000 |
Pro104 | Televīzija | 25 000 |
Pro105 | iPad | 60 000 |
Rakstīsim SQL vaicājumus, lai pievienotos tabulai, izmantojot PAŠPIEVIENOJIES sekojoši:
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;>