SQL JOIN
SQL prisijungimas naudojamas norint gauti arba sujungti duomenis (eilutes arba stulpelius) iš dviejų ar daugiau lentelių pagal apibrėžtas sąlygas.
1 lentelė: Užsakymas
Užsakymo ID | Kliento ID | Užsakymo pavadinimas | Produkto pavadinimas |
---|---|---|---|
12025 m | 101 | Petras | ABC |
12030 m | 105 | Robertas | XYX |
12032 | 110 | Džeimsas | XYZ |
12034 | 115 | Andriejus | PQR |
12035 | 120 | Mathew | AAA |
2 lentelė: Klientas
Kliento ID | Kliento vardas | Šalis |
---|---|---|
100 | Netvarkinga | Maxico |
101 | Princas | Taivanas |
103 | Marija Fernandez | Turkija |
105 | Jazminas | Paryžius |
110 | Fafas Vizlis | Indonezija |
120 | Romos raketa | Rusija |
Dabar turime du stalus Įsakymas ir Klientas . Čia yra Kliento ID stulpelis bendras abiejose lentelėse. Taigi, parašykite SQL užklausą, kad apibrėžtumėte bendrąjį ryšį, kad pasirinktumėte atitikmenų įrašus iš abiejų lentelių.
Select Order.OrderID, Customer.CustomerName, Customer.Country, Order.ProductName from Order INNER JOIN Customer ON Order.CustomerID = Customer.CustomerID;
Atlikę aukščiau nurodytus veiksmus SQL užklausų, ji sukuria tokią išvestį:
Užsakymo ID | Kliento vardas | Šalis | Produkto pavadinimas |
---|---|---|---|
12025 m | Princas | Taivanas | ABC |
12030 m | Jazminas | Paryžius | XYX |
12032 | Fafas Vizlis | Indonezija | XYZ |
12035 | Romos raketa | Rusija | AAA |
SQL prisijungimo tipai
SQL naudojami įvairūs sujungimų tipai:
- Vidinis prisijungimas / paprastas prisijungimas
- Kairysis išorinis sujungimas / kairysis sujungimas
- Dešinysis išorinis sujungimas / dešinysis sujungimas
- Pilnas išorinis prisijungimas
- Prisijunkite prie kryžiaus
- Prisijunkite patys
Vidinis prisijungimas
Vidinis sujungimas naudojamas norint pasirinkti visas atitinkančias eilutes ar stulpelius abiejose lentelėse arba tol, kol apibrėžta sąlyga galioja SQL.
Sintaksė:
Select column_1, column_2, column_3 FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
Vidinį sujungimą galime pavaizduoti per Venno diagramą taip:
1 lentelė: Mokiniai
Studento pažymėjimas | Studento vardas | Tema | Mokytojo ID |
---|---|---|---|
101 | Aleksandra | Informatika | T201 |
102 | Charlesas | Ekonomika | T202 |
103 | Tomas Kruzas | Informatika | T201 |
104 | Aronas Finčas | Elektronika | T203 |
105 | Sėklos Bajoffas | Web dizainas | T204 |
106 | Kristupas | Anglų literatūra | T205 |
107 | Džinsinis | Mados dizaineris | T206 |
2 lentelė: Mokytojai
Mokytojo ID | Mokytojo vardas | Mokytojo El |
---|---|---|
T201 | ponas Deivis | [apsaugotas el. paštas] |
T202 | Ponia Jonas | [apsaugotas el. paštas] |
T201 | ponas Deivis | [apsaugotas el. paštas] |
T204 | Ponia Lopez | [apsaugotas el. paštas] |
T205 | Ponia Wiley | [apsaugotas el. paštas] |
T206 | Ponas Bynas | [apsaugotas el. paštas] |
Turime dvi lenteles: Studentai ir Mokytojai Lentelės. Parašykime SQL užklausas, kad sujungtume lentelę naudodami VIDINIS PRISIJUNGIMAS taip:
Select Student_ID, StudentName, TeacherName, TeacherEmail FROM Students INNER JOIN Teachers ON Students.TeacherID = Teachers.TeacherID;
Įvykdžius užklausą, ji sukuria žemiau esančią lentelę.
Natūralus prisijungimas
Tai vidinio tipo tipas, kuris sujungia dvi ar daugiau lentelių pagal tą patį stulpelio pavadinimą ir turi tą patį duomenų tipą abiejose lentelėse.
Sintaksė:
Select * from tablename1 Natural JOIN tablename_2;
Turime dvi lenteles: Studentai ir Mokytojai Lentelės. Parašykime SQL užklausas, kad sujungtume lentelę naudodami Natūralus PRISIJUNK taip:
Select * from Students Natural JOIN Teachers;
Įvykdžius aukščiau pateiktą užklausą, ji sukuria tokią lentelę.
KAIRĖ PRISIJUNGTI
The KAIRĖ PRISIJUNGTI naudojama norint gauti visus įrašus iš kairiosios lentelės (lentelė1) ir atitinkančias eilutes ar stulpelius iš dešiniosios lentelės (2 lentelė). Jei abiejose lentelėse nėra atitinkančių eilučių ar stulpelių, ji grąžina NULL.
Sintaksė:
Select column_1, column_2, column(s) FROM table_1 LEFT JOIN table_2 ON table_1.column_name = table_2.column_name;
Taip pat galime pavaizduoti kairįjį sujungimą naudodami Venno diagramą, kaip nurodyta:
Pastaba: kai kuriose duomenų bazėse LEFT JOIN taip pat žinomas kaip LEFT OUTER JOIN.
1 lentelė: Produkto_informacija
Produkto ID | Produkto pavadinimas | Suma |
---|---|---|
Pro101 | Nešiojamas kompiuteris | 56 000 |
Pro102 | Mobilusis | 38 000 |
Pro103 | Ausinės | 5000 |
Pro104 | Televizija | 25 000 |
Pro105 | iPad | 60 000 |
2 lentelė: Kliento_informacija
koks mano monitoriaus ekrano dydis
Kliento vardas | Kliento adresas | Kliento amžius | Produkto ID |
---|---|---|---|
Martinas Guptillas | San Franciskas, JAV | 26 | Pro101 |
Džeimsas | Australija | 29 | Pro103 |
Ambati Williamson | Naujoji Zelandija | 27 | Pro102 |
Jofra Archeris | pietų Afrika | 24 | Pro105 |
Kate Wiley | Australija | dvidešimt | Pro103 |
Turime dvi lenteles: Produkto Aprašymas ir Customer_Details Lentelės. Parašykime SQL užklausas, kad sujungtume lentelę naudodami KAIRĖ PRISIJUNGTI taip:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Įvykdžius užklausą, ji sukuria tokią lentelę.
RIGHT JOIN arba RIGHT Outer JOIN:
The TEISINGAS PRISIJUNGTI naudojama norint gauti visus įrašus iš dešiniosios lentelės (2 lentelė) ir suderintas eilutes ar stulpelius iš kairiosios lentelės (1 lentelė). Jei abiejose lentelėse nėra atitinkančių eilučių ar stulpelių, ji grąžina NULL.
Sintaksė:
Select column_1, column_2, column(s) FROM table_1 RIGHT JOIN table_2 ON table_1.column_name = table_2.column_name;
Taip pat galime pavaizduoti tinkamą sujungimą naudodami Venno diagramą, kaip nurodyta:
Pastaba: Kai kuriose duomenų bazėse RIGHT JOIN taip pat žinomas kaip RIGHT OUTER JOIN.
1 lentelė: Produkto_informacija
ID | Produkto pavadinimas | Suma |
---|---|---|
Pro101 | Nešiojamas kompiuteris | 56 000 |
Pro102 | Mobilusis | 38 000 |
Pro103 | Ausinės | 5000 |
Pro104 | Televizija | 25 000 |
Pro105 | iPad | 60 000 |
2 lentelė: Kliento_informacija
Kliento vardas | Kliento adresas | Kliento amžius | Produkto ID |
---|---|---|---|
Martinas Guptillas | San Franciskas, JAV | 26 | Pro101 |
Džeimsas | Australija | 29 | Pro103 |
Ambati Williamson | Naujoji Zelandija | 27 | Pro102 |
Jofra Archeris | pietų Afrika | 24 | Pro105 |
Omenas | Anglija | 29 | Pro107 |
Morganas | Anglija | dvidešimt | Pro108 |
Turime dvi lenteles: Produkto Aprašymas ir Customer_Details Lentelės. Parašykime SQL užklausas, kad sujungtume lentelę naudodami TEISINGAS PRISIJUNGTI taip:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Įvykdžius užklausą, ji sukuria žemiau esančią lentelę.
FULL JOIN arba FULL Outer JOIN:
Tai abiejų rezultatų derinys KAIRĖ PRISIJUNGTI ir TEISINGAS PRISIJUNGTI . Sujungtos lentelės grąžina visus įrašus iš abiejų lentelių ir, jei lentelėje nerandama atitikmenų, įrašoma NULL. Jis taip pat vadinamas a VISAS IŠORINIS PRIJUNGIMAS .
Sintaksė:
Select column_1, column_2, column(s) FROM table_1 FULL JOIN table_2 ON table_1.column_name = table_2.column_name;
arba VISAS IŠORINIS PRIJUNGIMAS
Select column_1, column_2, column(s) FROM table_1 FULL OUTER JOIN table_2 ON table_1.column_name = table_2.column_name;
Visą išorinį sujungimą taip pat galime pavaizduoti naudodami Venno diagramą, kaip nurodyta:
1 lentelė: Produkto_informacija
ID | Produkto pavadinimas | Suma |
---|---|---|
Pro101 | Nešiojamas kompiuteris | 56 000 |
Pro102 | Mobilusis | 38 000 |
Pro103 | Ausinės | 5000 |
Pro104 | Televizija | 25 000 |
Pro105 | iPad | 60 000 |
2 lentelė: Kliento_informacija
Kliento vardas | Kliento adresas | Kliento amžius | Produkto ID |
---|---|---|---|
Martinas Guptillas | San Franciskas, JAV | 26 | Pro101 |
Džeimsas | Australija | 29 | Pro103 |
Ambati Williamson | Naujoji Zelandija | 27 | Pro102 |
Jofra Archeris | pietų Afrika | 24 | Pro105 |
Omenas | Anglija | 29 | Pro107 |
Morganas | Anglija | dvidešimt | Pro108 |
Turime dvi lenteles: Produkto Aprašymas ir Customer_Details Lentelės. Parašykime SQL užklausas, kad sujungtume lentelę naudodami PILNAS PRISIJUNK taip:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details FULL JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID;
Įvykdžius užklausą, ji sukuria žemiau esančią lentelę.
Pastaba: MySQL nepalaiko FULL JOIN sąvokų, todėl galime naudoti UNION ALL sąlygą, kad sujungtume abi lenteles.
Čia yra sintaksė SĄJUNGOS VISI Išlyga lentelių sujungimui.
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
KRYŽIAUS JUNGIMAS
Jis taip pat žinomas kaip KARTESIJA PRISIJUNGTI , kuris grąžina dviejų ar daugiau sujungtų lentelių Dekarto sandaugą. The KRYŽIAUS JUNGIMAS sukuria lentelę, kuri sujungia kiekvieną pirmosios lentelės eilutę su kiekviena antra lentelės eilute. Į CROSS JOIN nereikia įtraukti jokių sąlygų.
Sintaksė:
Select * from table_1 cross join table_2;
arba
Select column1, column2, column3 FROM table_1, table_2;
1 lentelė: Produkto_informacija
ID | Produkto pavadinimas | Suma |
---|---|---|
Pro101 | Nešiojamas kompiuteris | 56 000 |
Pro102 | Mobilusis | 38 000 |
Pro103 | Ausinės | 5000 |
Pro104 | Televizija | 25 000 |
Pro105 | iPad | 60 000 |
2 lentelė: Kliento_informacija
linux kaip pervardyti katalogą
Kliento vardas | Kliento adresas | Kliento amžius | Produkto ID |
---|---|---|---|
Martinas Guptillas | San Franciskas, JAV | 26 | Pro101 |
Džeimsas | Australija | 29 | Pro103 |
Ambati Williamson | Naujoji Zelandija | 27 | Pro102 |
Jofra Archeris | pietų Afrika | 24 | Pro105 |
Omenas | Anglija | 29 | Pro107 |
Morganas | Anglija | dvidešimt | Pro108 |
Turime dvi lenteles: Produkto Aprašymas ir Customer_Details Lentelės. Parašykime SQL užklausas, kad sujungtume lentelę naudodami PILNAS PRISIJUNK taip:
Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details, Customer_Details;
Įvykdžius užklausą, ji sukuria žemiau esančią lentelę.
PATS PRISIJUNK
Tai yra SELF JOIN, naudojamas kuriant lentelę sujungiant save, nes buvo dvi lentelės. Tai leidžia laikinai pavadinti bent vieną lentelę SQL sakinyje.
Sintaksė:
Select column1, column2, column(s) FROM table_1 Tbl1, table_2 Tbl2 WHERE condition;
1 lentelė ir Tbl2 yra du skirtingi tos pačios lentelės slapyvardžiai.
1 lentelė: Produkto_informacija
ID | Produkto pavadinimas | Suma |
---|---|---|
Pro101 | Nešiojamas kompiuteris | 56 000 |
Pro102 | Mobilusis | 38 000 |
Pro103 | Ausinės | 5000 |
Pro104 | Televizija | 25 000 |
Pro105 | iPad | 60 000 |
Parašykime SQL užklausas, kad sujungtume lentelę naudodami PATS PRISIJUNK taip:
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;>