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.

  1. Unutarnji spoj
  2. Lijevo spajanje
  3. Desno se pridružite
  4. Potpuno vanjsko spajanje
  5. Self-pridruže
  6. 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 ImeORDER_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 -

  1. Top 10 naredbi za MySQL
  2. Uvod u MySQL operatore
  3. MySQL vs SQLite | Vrh 14 usporedba
  4. Top 23 funkcije MySQL stringa
  5. Objasnite Insert Command u MySQL-u s primjerima
  6. Top 6 razlike primarnog i inozemnog ključa

Kategorija: