Sissejuhatus liitumistesse MySQL-is
MySQL Joins mängib olulist rolli, kui peame ühendama kaks tabelit, mis põhinevad ühel või mitmel ühisel väärtusel, mida kaks tabelit jagavad.
Näide : Mõelgem, et meil on kaks tabelit, üks on töötajate tabel, mis koosneb töötaja_id, phn_no, palk ja osakond. Teine tabel on aadressitabel, mis koosneb töötaja_ID ja aadressist. Kui peame välja selgitama töötaja_ID, osakonna ja aadressi, peame ühinema mõlemad tabelid, mis jagavad ühist välja kui töötaja_id.
Päring :
SELECT e1.employee_id, e1.department, a1.address
FROM employee e1
INNER JOIN address a1
ON e1.employee_id = a1.employee_id;
MySQL-is 6 parimat liitumistüüpi
MySQL-is on erinevat tüüpi liitumisi. Allpool nimetatud liitumised puutuvad kokku igapäevases kasutuses ja on kõige kasulikumad, kui reaalajas stsenaariumi korral paljusid päringuid teha.
- Sisemine liitumine
- Vasak liitumine
- Parempoolne liitumine
- Täielik välimine liitumine
- Ise liituda
- Rist liituda
1. Sisemine liitumine
Siseühendus tagastab väärtuse, mis sobib mõlemas tabelis.
See osa tuleb väljundis, nagu on näidatud ülaltoodud pildil.
Näide nr 1:
Tühi_id | Osakond | Palk |
1001 | IT | 1000 |
1002 | CSR | 800 |
1003 | IT | 2000 |
See on töötajate tabel.
Tühi_id | Aadress |
1002 | Delhi |
1003 | Bangalore |
1005 | Bbsr |
Siin on nende töötajate aadressitabel. Vanematabeli töötaja peamist võtit emp_id kasutatakse võõrvõtmena aadressitabelis, mis on alamlaud. Leiame sisemise liitumise abil ühe töötaja emp_id, osakonna ja aadressi. Kuna sisemised liitumisseisundid, see tõmbab kirjed, mis on olemas / levinud mõlemas tabelis.
Päring:
SELECT emp.emp_id, emp.department, ads.address
FROM employee AS emp
INNER JOIN address AS ads
ON emp.emp_id = ads.emp_id;
Anname tabelinimele varjunime lihtsalt selleks, et vältida rohkem aeganõudevust. Ülaltoodud päringus kasutame töötajate tabeli jaoks pseudonüümi 'emp' ja aadressitabeli jaoks 'reklaame'.
Väljund:
Tühi_id | Osakond | Aadress |
1002 | CSR | Delhi |
1003 | IT | Bangalore |
Nagu ülaltoodud näites olid emp_id 1002 ja 1003 mõlema tabeli vahel ühised, tõmbab sisemine liitmiskäsk väljundi ainult nende töötajate jaoks.
Näide 2:
Siin on meil 2 tabelit, tabel1 ja tabel2. Mõlemad tabelid koosnevad vastavalt ühest veerust A ja B atribuudist.
Tabel 1
A veerg |
1 |
1 |
2 |
3 |
4 |
Tabel2
B veerg |
1 |
2 |
2 |
3 |
3 |
5 |
Päring:
If we apply inner join here,
SELECT * FROM Table1
INNER JOIN table2
ON columnA = columnB;
Väljund:
A veerg | B veerg |
1 | 1 |
1 | Null |
2 | 2 |
Null | 2 |
3 | 3 |
Null | 3 |
2. Vasak liitumine
See liitumine tagastab kõik kirjed vasakult tabelilt ja vastavad kirjed paremalt tabelilt.
Nagu ülaltoodud diagramm näitab, koosneb see kõigist tabeli A kirjetest ning ühistest A ja B kirjetest.
Näide nr 1:
Kliendi ID | Nimi | Linn |
1 | Harish | Cuttack |
2 | David | Bangalore |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
Klientide tabel:
Tellimuse ID | Summa | Kliendi ID |
19868 | 7575.00 | 4 |
19976 | 434654.00 | 2 |
99680 | 7457.00 | 3 |
Tellimustabel:
Vasakpoolse liitumise abil saame teada kliendi ID, nime ja tellimis_ID.
Päring:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
LEFT JOIN order ord
ON cust.customer_id = ord.customer_id;
Väljund:
Kliendi ID | Nimi | Tellimuse ID |
1 | Harish | null |
2 | David | 19976 |
3 | Mahesh | 99680 |
4 | Sam | 19868 |
Nagu me sellest arutasime, tõmbas vasakpoolne liitumine kliendi tabelist kõik kliendi id ja mõlema tabeli ühised. Kliendid_id '1' kuvatakse kui 'null', kuna väärtust '1' kliendi_id ei ole tellimustabelis.
Näide 2:
Siin on meil 2 tabelit, tabel1 ja tabel2. Mõlemad tabelid koosnevad vastavalt ühest veerust A ja B atribuudist.
Tabel 1
A veerg |
1 |
1 |
2 |
2 |
3 |
Tabel2
B veerg |
1 |
2 |
2 |
4 |
4 |
5 |
5 |
Päring:
If we apply left join on above 2 tables,
SELECT * FROM table1
LEFT JOIN table2
ON columnA = columnB;
A veerg | B veerg |
1 | 1 |
1 | Null |
2 | 2 |
2 | 2 |
3 | Null |
3. Parempoolne liitumine
See liitumine tagastab kõik kirjed paremalt tabelilt ja vastavad kirjed vasakult tabelilt.
Ülaltoodud diagramm näitab, et see tõmbab kõik kirjed tabelist B ja ühistest, mis on olemas mõlemas tabelis.
Näide:
Kliendi ID | Nimi | Linn |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
5 | Ramm | Mumbai |
Klientide tabel:
Tellimuse ID | Summa | Kliendi ID |
19868 | 7575.00 | 4 |
19976 | 434654.00 | 2 |
99680 | 7457.00 | 3 |
Tellimustabel:
Õige liitumise abil saame teada kliendi ID, nime ja tellimuse_id, mis on sellega seotud.
Päring:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
RIGHT JOIN order ord
ON cust.customer_id = ord.customer_id;
Väljund:
Kliendi ID | Nimi | Tellimuse ID |
2 | null | 19976 |
3 | Mahesh | 99680 |
4 | Sam | 19868 |
Kui siin õigesti liitusime, tõmbas päring tellimuse tabelist kõik kliendi id ja mõlemas tabelis olevad ühised kirjed.
4. Täielik väline liitumine
Täielik välimine liitmine tagastab kõik kirjed mõlemast tabelist, kui ühist välja on jagatud.
Näide:
Kliendi ID | Nimi | Linn |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
5 | Ramm | Mumbai |
Klientide tabel:
Tellimuse ID | Summa | Kliendi ID |
19868 | 7575.00 | 4 |
19976 | 434654.00 | 2 |
99680 | 7457.00 | 3 |
Tellimustabel:
Täpse välimise liitumise abil saame teada kliendi ID, nime ja tellimuse_ID, mis on sellega seotud.
Päring:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
FULL OUTER JOIN order ord
ON cust.customer_id = ord.customer_id;
Väljund:
Kliendi ID | Nimi | Tellimuse ID |
2 | null | 19976 |
3 | Mahesh | 99680 |
4 | Sam | 19868 |
5 | Ramm | null |
See täielik välimine liitumine tõi kõik kliendi ID-d kliendilaualt ja tellimustabelilt.
5. Ise liitumine
Ise liitumine on regulaarne liitumine ja siin ühineb tabel ainult endaga.
Tühi_id | Nimi | Telefoninumber | Linn | Riik |
1001 | R. Madhvan | 9687687698 | Bangalore | India |
1002 | Gobu Sharma | 9856453423 | Pune | India |
1003 | Debasish Das | 8765456787 | Mumbai | India |
1004 | Amit Rout | 4567788635 | Pune | India |
1005 | Sambit Kar | 8789887873 | Hyderabad | India |
Siin on mitmest väljast koosnev töötajate tabel. Saame teada samas linnas elavad töötajad.
Päring :
SELECT e1.name AS Employee_name1, e2.name AS employee_name2, e1.City
FROM employee e1, employee e2
WHERE e1.name e2.name
AND e1.city = e2.city;
Väljund :
Töötaja_nimi1 | Töötaja_nimi2 | e1.linn |
Gobu Sharma | Amit Rout | Pune |
Amit Rout | Gobu Sharma | Pune |
6. Risti liitumine
See liitmine annab tulemuse, kus esimese tabeli ridade arv korrutatakse teise tabeli ridadega. Sellist tulemust nimetatakse Cartesiuse tooteks. Kui me kasutame selle liitumisega WHERE klauslit, siis toimib see sisemise liitumisena.
Näide:
Prod_id | Tootenimi | Prod_unit | Ettevõtte_id |
1 | Chexi segu | Tk | 12 |
2 | Cheez-it | Tk | 15 |
3 | Biskviit | tk | 16 |
Tootetabel:
Ettevõtte_id | Ettevõtte_nimi | Ettevõtte_linn |
15 | Toitumised | Delhi |
16 | Jack n Jill | Cuttack |
17 | Looduslik | Bangalore |
Ettevõtte tabel:
Nendele tabelitele rakendame ristühendust.
Päring :
SELECT p.product_name, p.prod_unit, c.company_name
FROM product p
CROSS JOIN company c;
Väljund :
p.toote_nimi | p.prod_unit | c.ettevõtte_nimi |
Chexi segu | Tk | Toitumised |
Cheez-it | Tk | Toitumised |
Biskviit | Tk | Toitumised |
Chexi segu | Tk | Jack n Jill |
Cheez-it | Tk | Jack n Jill |
Biskviit | Tk | Jack n Jill |
Chexi segu | Tk | Looduslik |
Cheez-it | Tk | Looduslik |
Biskviit | Tk | Looduslik |
Järeldus
Nende liitumiste olulisus on väga oluline nii reaalajas stsenaariumide kui ka mõne muu tehnoloogia kasutamisel. Sellistes visualisatsioonides nagu Tableau ja Power BI mängivad liitumised üliolulist rolli. Selle struktureeritud praktika on nende uute tehnikate ja oskuste kinnistamiseks võtmetähtsusega.
Soovitatav artikkel
See on MySQL-i liitumiste juhend. Siin käsitleme MySQL-i kuut liitumistüüpi, näiteks Sise-, Vasak-, Parempoolne, Täielik, Ise, Rist ja selle näited koos päringu ja väljundiga. lisateabe saamiseks võite tutvuda ka meie soovitatud artiklitega -
- 10 parimat MySQL-i käsku
- Sissejuhatus MySQL-i operaatoritesse
- MySQL vs SQLite | 14 parimat võrdlust
- MySQL Stringi 23 parimat funktsiooni
- Selgitage lisamiskäsku MySQL-is näidetega
- Primaarvõtme ja võõra võtme 6 peamist erinevust