X
MySQL JOIN - Povezovanje podatkov iz več tabel
JOIN je SQL ukaz, ki omogoča povezovanje podatkov iz dveh ali več tabel v en rezultat.
MySQL podpira različne vrste JOIN ukazov:
-
INNER JOIN: Vrne samo zapise, ki se ujemajo v obeh tabelah
- Vrne samo vrstice, kjer se vrednosti ujemajo v obeh tabelah
- Najbolj pogosto uporabljena vrsta JOIN-a
- Primer: Seznam zaposlenih z njihovimi oddelki
-
LEFT JOIN (ali LEFT OUTER JOIN): Vrne vse zapise iz leve tabele in ujemajoče zapise iz
desne
- Vrne vse zapise iz leve tabele in ujemajoče zapise iz desne
- Če ni ujemanja, so vrednosti iz desne NULL
- Uporabno za prikaz vseh zapisov iz glavne tabele
-
RIGHT JOIN (ali RIGHT OUTER JOIN): Vrne vse zapise iz desne tabele in ujemajoče zapise
iz leve
- Vrne vse zapise iz desne tabele in ujemajoče zapise iz leve
- Deluje podobno kot LEFT JOIN, le da ohrani vse zapise iz desne tabele
- Manj pogosto uporabljen, večinoma lahko uporabimo LEFT JOIN
- FULL JOIN: Vrne vse zapise iz obeh tabel (v MySQL-u simuliramo z UNION)
JOIN ukaze uporabljamo s stavkom ON ali USING za določitev pogojev povezovanja.
-
Uporaba JOIN ukazov:
- Določimo tabele, ki jih želimo povezati
- Izberemo ustrezno vrsto JOIN-a glede na potrebe
- Definirajmo pogoj povezovanja z ON ali USING
-
Dobra praksa
- Vedno uporabljajmo vzdevke (aliase) za tabele
- Jasno določimo pogoje povezovanja
- Pazimo na NULL vrednosti pri zunanjem povezovanju
-
V tem primeru imamo dve tabeli:
- oddelki: vsebuje podatke o oddelkih (id_oddelek, ime_oddelka)
- zaposleni: vsebuje podatke o zaposlenih (id_zaposlen, ime, id_oddelek, nadrejeni_id)
Tabeli sta povezani preko polja id_oddelek. Spodaj je primer INNER JOIN-a:
SELECT z.ime, o.ime_oddelka FROM zaposleni z INNER JOIN oddelki o ON z.id_oddelek = o.id_oddelek;
-
INNER JOIN prikaže samo tiste zaposlene in oddelke, kjer obstaja povezava:
SELECT z.ime, o.ime_oddelka FROM zaposleni z INNER JOIN oddelki o ON z.id_oddelek = o.id_oddelek;
-
LEFT JOIN prikaže vse zaposlene, tudi če nimajo določenega oddelka:
SELECT z.ime, o.ime_oddelka FROM zaposleni z LEFT JOIN oddelki o ON z.id_oddelek = o.id_oddelek;
-
RIGHT JOIN prikaže vse oddelke, tudi tiste brez zaposlenih:
SELECT z.ime, o.ime_oddelka FROM zaposleni z RIGHT JOIN oddelki o ON z.id_oddelek = o.id_oddelek;
-
CROSS JOIN prikaže vse možne kombinacije zaposlenih in oddelkov:
SELECT z.ime AS zaposleni, o.ime_oddelka FROM zaposleni z CROSS JOIN oddelki o;
-
Self JOIN na tabeli zaposleni nam omogoča prikaz nadrejenih:
SELECT z1.ime AS zaposleni, z2.ime AS nadrejeni FROM zaposleni z1 LEFT JOIN zaposleni z2 ON z1.nadrejeni_id = z2.id_zaposlen ORDER BY z1.ime;
Za boljšo uporabniško izkušnjo in funkcionalnost spletnega mesta uporabljamo piškotke.
Preberi več!
Hvala za obisk! Dodajam politiko zasebnosti.
© 2024 Vse pravice pridržane.
Vam je koda pomagala? Če želite podpreti moj trud pri pripravi vodičev in vzdrževanju strani, mi lahko
namenite donacijo za kavo.