Uvod v Pridružitve v MySQL

MySQL Joins igra pomembno vlogo, ko moramo združiti dve tabeli skupaj na podlagi ene ali več skupnih vrednosti, ki jih delita dve tabeli.

Primer : Razmislimo, da imamo dve tabeli, ena je tabela zaposlenih, ki jo sestavljajo zaposleni_id, phn_no, plača in oddelek. Druga tabela je tabela naslovov, ki jo sestavljajo zaposleni_id in naslov. Če moramo najti zaposleni_id, oddelek in naslov, se moramo pridružiti obema tabelama, ki si delita skupno polje kot zaposleni_id.

Poizvedba :

SELECT e1.employee_id, e1.department, a1.address
FROM employee e1
INNER JOIN address a1
ON e1.employee_id = a1.employee_id;

Prvih 6 vrst združitev v MySQL

V MySQL obstajajo različne vrste združitev. Spodaj omenjena združenja se srečujejo v vsakodnevni uporabi in so najbolj uporabna pri izvajanju številnih poizvedb v resničnih primerih.

  1. Notranji pridružite
  2. Levi spoj
  3. Desno se pridružite
  4. Popolni zunanji spoj
  5. Samopriključi se
  6. Križni spoj

1. Notranja združitev

Inner join vrne vrednost, ki se ujema v obeh tabelah.

Ta del je v izhodu, kot je prikazano na zgornji sliki.

1. primer:

Emp_id Oddelek Plača
1001 IT 1000
1002 CSR 800
1003 IT 2000

To je tabela zaposlenih.

Emp_id Naslov
1002 Delhi
1003 Bangalore
1005 Bbsr

Tu je naslovna tabela teh zaposlenih. Primarni ključ emp_id zaposlenega v tabeli se uporablja kot tuji ključ v naslovni tabeli, ki je nadrejena tabela. Z notranjo povezavo bomo našli em_id, oddelek in naslov enega zaposlenega. Ker notranja stanja združevanja Prejema zapise, ki so v obeh tabelah prisotni / pogosti.

Poizvedba:

SELECT emp.emp_id, emp.department, ads.address
FROM employee AS emp
INNER JOIN address AS ads
ON emp.emp_id = ads.emp_id;

V ime tabele podajamo vzdevek samo zato, da ne bomo zamudili več časa. V zgornji poizvedbi uporabljamo vzdevek 'emp' za tabelo zaposlenih in 'oglasi' za naslovno tabelo.

Izhod:

Emp_id Oddelek Naslov
1002 CSR Delhi
1003 IT Bangalore

Ker sta v zgornjem primeru emp_id 1002 in 1003 skupni med obema tabelama, notranji ukaz pridruži pridobi rezultate samo za te zaposlene.

Primer # 2:

Tu imamo 2 tabeli, table1 in table2. Obe tabeli sta sestavljeni iz enega atributa v stolpcu A in v stolpcu B.

Tabela1

Stolpec A
1
1
2
3
4

Tabela2

Stolpec B
1
2
2
3
3
5

Poizvedba:

If we apply inner join here,
SELECT * FROM Table1
INNER JOIN table2
ON columnA = columnB;

Izhod:

Stolpec A Stolpec B
1 1
1 Nič
2 2
Nič 2
3 3
Nič 3

2. Levo Pridružite se

To združevanje vrne vse zapise iz leve tabele in izravnane zapise iz desne tabele.

Kot prikazuje zgornji diagram, je sestavljen iz vseh zapisov tabele A in običajnih iz A in B.

1. primer:

Identifikacijska številka stranke Ime Mesto
1 Harish Cuttack
2 David Bangalore
3 Maheš Bhubaneswar
4 Sam Kolkata

Tabela kupcev:

Številka naročila Znesek Identifikacijska številka stranke
19868 7575, 00 4
19976 434654.00 2
99680 7457.00 3

Tabela naročil:

S pomočjo pridruženega levega bomo ugotovili, kakšen je customer_id, ime in vrstni red_id.

Poizvedba:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
LEFT JOIN order ord
ON cust.customer_id = ord.customer_id;

Izhod:

Identifikacijska številka stranke ImeŠtevilka naročila
1 Harish nič
2 David 19976
3 Maheš 99680
4 Sam 19868

Medtem ko smo razpravljali o tej levi povezavi, smo prejeli ves ID stranke iz tabele stranke in običajne med obema tabelama. Za customer_id '1' bo prikazan kot 'null', ker '1' customer_id ni v tabeli naročil.

Primer # 2:

Tu imamo 2 tabeli, table1 in table2. Obe tabeli sta sestavljeni iz enega atributa v stolpcu A in v stolpcu B.

Tabela1

Stolpec A
1
1
2
2
3

Tabela2

Stolpec B
1
2
2
4
4
5
5

Poizvedba:

If we apply left join on above 2 tables,
SELECT * FROM table1
LEFT JOIN table2
ON columnA = columnB;

Stolpec A Stolpec B
1 1
1 Nič
2 2
2 2
3 Nič

3. Desno se pridruži

To združevanje vrne vse zapise iz desne tabele in ujemajoče se iz leve.

Zgornji diagram prikazuje, da prihaja do vseh zapisov iz tabele B in skupnega, ki je prisoten v obeh tabelah.

Primer:

Identifikacijska številka stranke Ime Mesto
3 Maheš Bhubaneswar
4 Sam Kolkata
5 Oven Bombaj

Tabela kupcev:

Številka naročila Znesek Identifikacijska številka stranke
19868 7575, 00 4
19976 434654.00 2
99680 7457.00 3

Tabela naročil:

Z desno povezavo bomo ugotovili, da so z njim povezani customer_id, ime in vrstni red_id.

Poizvedba:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
RIGHT JOIN order ord
ON cust.customer_id = ord.customer_id;

Izhod:

Identifikacijska številka stranke Ime Številka naročila
2 nič 19976
3 Maheš 99680
4 Sam 19868

Ko smo se tukaj pridružili prav tako, je poizvedba prejela ves ID stranke iz tabele naročil in skupnih zapisov, ki so v obeh tabelah.

4. Popolna zunanja pridružitev

Popolna zunanja povezava vrne vse zapise iz obeh tabel, če je skupno polje v skupni rabi.

Primer:

Identifikacijska številka stranke Ime Mesto
3 Maheš Bhubaneswar
4 Sam Kolkata
5 Oven Bombaj

Tabela kupcev:

Številka naročila Znesek Identifikacijska številka stranke
19868 7575, 00 4
19976 434654.00 2
99680 7457.00 3

Tabela naročil:

Ugotovili bomo customer_id, ime in vrstni red_id, ki je z njim povezan, s pomočjo celotnega zunanjega združevanja.

Poizvedba:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
FULL OUTER JOIN order ord
ON cust.customer_id = ord.customer_id;

Izhod:

Identifikacijska številka stranke Ime Številka naročila
2 nič 19976
3 Maheš 99680
4 Sam 19868
5 Oven nič

Ta popolna zunanja povezava je prejela ves ID stranke iz tabele stranke in tudi tabelo naročil.

5. Pridružite se sebi

Samo-pridružitev je redna pridružitev in tu se miza združi samo s seboj.

Emp_id Ime Telefon_no Mesto Država
1001 R. Madhvan 9687687698 Bangalore Indija
1002 Gobu Šarma 9856453423 Pune Indija
1003 Pogumni Das 8765456787 Bombaj Indija
1004 Amit Rout 4567788635 Pune Indija
1005 Sambit Kar 8789887873 Hyderabad Indija

Tukaj je tabela zaposlenih, sestavljena iz več polj. Ugotovili bomo zaposlene, ki živijo v istem mestu.

Poizvedba :

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;

Izhod :

Ime zaposlenega1 Ime zaposlenega2 e1.city
Gobu Šarma Amit Rout Pune
Amit Rout Gobu Šarma Pune

6. Cross Pridružite se

To združevanje povzroči rezultat, ko se število vrstic v prvi tabeli pomnoži s vrsticami v drugi tabeli. Takšen rezultat se imenuje kartuzijanski izdelek. Če s tem pridruživanjem uporabimo določbo WHERE, bo to delovalo kot notranje združevanje.

Primer:

Prod_id Ime izdelka Prod_unit Company_id
1 Chex mešanica Kosi 12
2 Cheez-it Kosi 15
3 Biskvit kos 16

Tabela izdelkov:

Company_id Ime podjetja Podjetje_grad
15 Foodies Delhi
16 Jack n Jill Cuttack
17 Naravni Bangalore

Tabela podjetja :

Na te tabele bomo uporabili navzkrižno povezavo.

Poizvedba :

SELECT p.product_name, p.prod_unit, c.company_name
FROM product p
CROSS JOIN company c;

Izhod :

p.product_name p.prod_unit c.company_name
Chex mešanica Kosi Foodies
Cheez-it Kosi Foodies
Biskvit Kosi Foodies
Chex mešanica Kosi Jack n Jill
Cheez-it Kosi Jack n Jill
Biskvit Kosi Jack n Jill
Chex mešanica Kosi Naravni
Cheez-it Kosi Naravni
Biskvit Kosi Naravni

Zaključek

Pomen teh povezav je zelo pomemben tudi pri delu v realnem času in tudi pri nekaterih drugih tehnologijah. Pri vizualizacijah, kot sta Tableau in Power BI, imajo pridružitve ključno vlogo. Strukturirana praksa tega je ključna za vključitev teh novih tehnik in veščin.

Priporočeni članek

To je vodnik za združitve v MySQL. Tukaj razpravljamo o prvih 6 vrstah združitev v MySQL, kot so Notranji, Levi, Desni, Polni, Self, Cross in njegovi primeri, skupaj s poizvedbo in izhodi. lahko preberete tudi naše predlagane članke, če želite izvedeti več -

  1. Najboljših 10 ukazov MySQL
  2. Uvod v operaterje MySQL
  3. MySQL vs SQLite | Top 14 Primerjava
  4. Prvih 23 funkcij nizov MySQL
  5. Pojasnite Insert Command v MySQL s primeri
  6. Najboljših 6 razlik primarnega in tujega ključa