Uvod u pridruživanja u MySQL-u
MySQL Joins igra važnu ulogu kada moramo spojiti dvije tablice na temelju jedne ili više uobičajenih vrijednosti koje dijele dvije tablice.
Primjer : Uzmimo da imamo dvije tablice, jedna je tablica zaposlenika koja se sastoji od zaposlenika_id, phn_no, plaće i odjela. Druga tablica je adresna tablica koja se sastoji od zaposlenika_id i adrese. Ako trebamo pronaći zaposlenika_id, odjel i adresu, moramo se pridružiti obje tablice koje dijele zajedničko polje kao zaposleni_id.
Upit :
SELECT e1.employee_id, e1.department, a1.address
FROM employee e1
INNER JOIN address a1
ON e1.employee_id = a1.employee_id;
Top 6 vrsta pridruživanja u MySQL-u
Postoje različite vrste pridruživanja u MySQL-u. Ispod spomenuta spajanja svakodnevno se susreću i najkorisnija su za provođenje mnogih upita u stvarnim scenarijima.
- Unutarnji spoj
- Lijevo spajanje
- Desno se pridružite
- Potpuno vanjsko spajanje
- Self-pridruže
- Križni spoj
1. Unutarnje spajanje
Unutrašnje pridruživanje vraća vrijednost koja se podudara u obje tablice.
Ovaj dio dolazi u izlazu kao što je prikazano na slici iznad.
Primjer 1:
Emp_id | odjel | Plaća |
1001 | TO | 1000 |
1002 | DOP | 800 |
1003 | TO | 2000 |
Ovo je stol zaposlenika.
Emp_id | Adresa |
1002 | Delhi |
1003 | Bangalore |
1005 | Bbsr |
Ovdje je adresa tablice tih zaposlenika. Primarni ključ emp_id zaposlenika nadređene tablice koristi se kao strani ključ u adresnoj tablici koja je podređena tablica. Pronaći ćemo em_id, odjel i adresu jednog zaposlenika pomoću interne pridruživanja. Budući da su unutarnja stanja spajanja Dohvaća zapise koji su prisutni / zajednički u obje tablice.
upita:
SELECT emp.emp_id, emp.department, ads.address
FROM employee AS emp
INNER JOIN address AS ads
ON emp.emp_id = ads.emp_id;
Mi dajemo pseudonim nazivu tablice samo kako bismo izbjegli više vremena. U gornjem upitu koristimo pseudonim 'emp' za tablicu zaposlenika i 'ads' za adresnu tablicu.
Izlaz:
Emp_id | odjel | Adresa |
1002 | DOP | Delhi |
1003 | TO | Bangalore |
Kako su u gornjem primjeru emp_id 1002 i 1003 uobičajeni između obje tablice, naredba za interno pridruživanje donosi izlaz samo za ove zaposlenike.
Primjer br. 2:
Ovdje imamo 2 tablice, table1 i table2. Obje tablice se sastoje od po jednog atributa, svaki kao stupac A i stupac B.
Stol 1
Stupac A |
1 |
1 |
2 |
3 |
4 |
Table2
Stupac B |
1 |
2 |
2 |
3 |
3 |
5 |
upita:
If we apply inner join here,
SELECT * FROM Table1
INNER JOIN table2
ON columnA = columnB;
Izlaz:
Stupac A | Stupac B |
1 | 1 |
1 | nula |
2 | 2 |
nula | 2 |
3 | 3 |
nula | 3 |
2. Lijevo spajanje
Ovo pridruživanje vraća sve zapise iz lijeve tablice, a podudarne zapise iz desne tablice.
Kao što prikazuje gornji dijagram, on se sastoji od svih zapisa tablice A i uobičajenih zapisa iz A i B.
Primjer 1:
CUSTOMER_ID | Ime | Grad |
1 | Harish | Cuttack |
2 | David | Bangalore |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
Tablica korisnika:
ORDER_ID | Iznos | CUSTOMER_ID |
19.868 | 7.575, 00 | 4 |
19.976 | 434.654, 00 | 2 |
99.680 | 7.457, 00 | 3 |
Tablica za narudžbu:
Otkrićemo customer_id, ime i order_id povezane pomoću lijeve pridruživanja.
upita:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
LEFT JOIN order ord
ON cust.customer_id = ord.customer_id;
Izlaz:
CUSTOMER_ID | Ime | ORDER_ID |
1 | Harish | nula |
2 | David | 19.976 |
3 | Mahesh | 99.680 |
4 | Sam | 19.868 |
Dok smo raspravljali o ovom lijevom pridruživanju dohvaćen je sav korisnički ID iz korisničke tablice, ali i zajednički između obje tablice. Za customer_id '1' prikazat će se kao 'null' jer '1' customer_id nije prisutan u tablici narudžbi.
Primjer br. 2:
Ovdje imamo 2 tablice, table1 i table2. Obje tablice se sastoje od po jednog atributa, svaki kao stupac A i stupac B.
Stol 1
Stupac A |
1 |
1 |
2 |
2 |
3 |
Table2
Stupac B |
1 |
2 |
2 |
4 |
4 |
5 |
5 |
upita:
If we apply left join on above 2 tables,
SELECT * FROM table1
LEFT JOIN table2
ON columnA = columnB;
Stupac A | Stupac B |
1 | 1 |
1 | nula |
2 | 2 |
2 | 2 |
3 | nula |
3. Desno se pridružite
Ovo pridruživanje vraća sve zapise iz desne tablice, a one koji odgovaraju iz lijeve.
Gornji dijagram pokazuje da dohvaća sve zapise iz tablice B i zajedničke one koji su prisutni u obje tablice.
Primjer:
CUSTOMER_ID | Ime | Grad |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
5 | Radna memorija | Mumbai |
Tablica korisnika:
ORDER_ID | Iznos | CUSTOMER_ID |
19.868 | 7.575, 00 | 4 |
19.976 | 434.654, 00 | 2 |
99.680 | 7.457, 00 | 3 |
Tablica za narudžbu:
Otkrićemo customer_id, ime i order_id koji je s njim povezan desnim spajanjem.
upita:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
RIGHT JOIN order ord
ON cust.customer_id = ord.customer_id;
Izlaz:
CUSTOMER_ID | Ime | ORDER_ID |
2 | nula | 19.976 |
3 | Mahesh | 99.680 |
4 | Sam | 19.868 |
Kako smo se ovdje dobro pridružili, tako je upit dohvatio sve ID-ove kupca iz tablice naloga i zajedničkih zapisa koji se nalaze u obje tablice.
4. Potpuno spajanje s vanjske strane
Potpuno vanjsko spajanje vraća sve zapise iz obje tablice ako je zajedničko polje zajedničko.
Primjer:
CUSTOMER_ID | Ime | Grad |
3 | Mahesh | Bhubaneswar |
4 | Sam | Kolkata |
5 | Radna memorija | Mumbai |
Tablica korisnika:
ORDER_ID | Iznos | CUSTOMER_ID |
19.868 | 7.575, 00 | 4 |
19.976 | 434.654, 00 | 2 |
99.680 | 7.457, 00 | 3 |
Tablica za narudžbu:
Otkrićemo customer_id, ime i order_id koji su s njim povezani pomoću punog vanjskog spajanja.
upita:
SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
FULL OUTER JOIN order ord
ON cust.customer_id = ord.customer_id;
Izlaz:
CUSTOMER_ID | Ime | ORDER_ID |
2 | nula | 19.976 |
3 | Mahesh | 99.680 |
4 | Sam | 19.868 |
5 | Radna memorija | nula |
Ovaj potpuni vanjski spoj dohvatio je sve ID-e klijenta iz korisničke tablice, kao i tablicu naloga.
5. Samostalno se pridružite
Samo-pridruživanje je redovno pridruživanje i ovdje se stol spaja samo sa sobom.
Emp_id | Ime | Phone_no | Grad | Zemlja |
1001 | R. Madhvan | 9687687698 | Bangalore | Indija |
1002 | Gobu Šarma | 9856453423 | Pune | Indija |
1003 | Raspraviti Das | 8765456787 | Mumbai | Indija |
1004 | Dopustite rutinu | 4567788635 | Pune | Indija |
1005 | Sambit Kar | 8789887873 | Hyderabad | Indija |
Ovdje je tablica zaposlenika koja se sastoji od nekoliko polja. Saznat ćemo zaposlenike koji žive u istom gradu.
Upit :
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;
Izlaz :
Employee_name1 | Employee_name2 | e1.city |
Gobu Šarma | Dopustite rutinu | Pune |
Dopustite rutinu | Gobu Šarma | Pune |
6. Cross Cross
Ovo pridruživanje daje rezultat kada se broj redaka u prvoj tablici umnoži s redovima u drugoj tablici. Ova vrsta rezultata naziva se kartezijanski proizvod. Ako koristimo rečenicu WHERE s ovim pridruživanjem, tada će ovo raditi kao unutarnje spajanje.
Primjer:
Prod_id | Ime proizvoda | Prod_unit | Company_id |
1 | Chex mješavina | kom | 12 |
2 | Cheez-to | kom | 15 |
3 | Biskvit | kom | 16 |
Tabela proizvoda :
Company_id | COMPANY_NAME | Company_city |
15 | gurmane | Delhi |
16 | Jack n Jill | Cuttack |
17 | prirodni | Bangalore |
Tvrtka Tablica:
Na ove tablice primijenit ćemo unakrsni spoj.
Upit :
SELECT p.product_name, p.prod_unit, c.company_name
FROM product p
CROSS JOIN company c;
Izlaz :
p.product_name | p.prod_unit | c.company_name |
Chex mješavina | kom | gurmane |
Cheez-to | kom | gurmane |
Biskvit | kom | gurmane |
Chex mješavina | kom | Jack n Jill |
Cheez-to | kom | Jack n Jill |
Biskvit | kom | Jack n Jill |
Chex mješavina | kom | prirodni |
Cheez-to | kom | prirodni |
Biskvit | kom | prirodni |
Zaključak
Značaj tih spajanja vrlo je važan za rad u scenarijima u stvarnom vremenu kao i za neke druge tehnologije. U vizualizacijama poput Tableau i Power BI, pridruživanja igraju vitalnu ulogu. Strukturirana praksa ovoga je ključna za ugradnju ovih novih tehnika i vještina.
Preporučeni članak
Ovo je vodič za pridruživanja u MySQL-u. Ovdje smo raspravljali o prvih 6 vrsta pridruživanja u MySQL-u, poput Inner, Left, Right, Full, Self, Cross i njegovih primjera zajedno s upitima i izlazima. također možete proći kroz naše predložene članke da biste saznali više -
- Top 10 naredbi za MySQL
- Uvod u MySQL operatore
- MySQL vs SQLite | Vrh 14 usporedba
- Top 23 funkcije MySQL stringa
- Objasnite Insert Command u MySQL-u s primjerima
- Top 6 razlike primarnog i inozemnog ključa