vadnica-logo
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:

  1. INNER JOIN: Vrne samo zapise, ki se ujemajo v obeh tabelah
    1. Vrne samo vrstice, kjer se vrednosti ujemajo v obeh tabelah
    2. Najbolj pogosto uporabljena vrsta JOIN-a
    3. Primer: Seznam zaposlenih z njihovimi oddelki
  2. LEFT JOIN (ali LEFT OUTER JOIN): Vrne vse zapise iz leve tabele in ujemajoče zapise iz desne
    1. Vrne vse zapise iz leve tabele in ujemajoče zapise iz desne
    2. Če ni ujemanja, so vrednosti iz desne NULL
    3. Uporabno za prikaz vseh zapisov iz glavne tabele
  3. RIGHT JOIN (ali RIGHT OUTER JOIN): Vrne vse zapise iz desne tabele in ujemajoče zapise iz leve
    1. Vrne vse zapise iz desne tabele in ujemajoče zapise iz leve
    2. Deluje podobno kot LEFT JOIN, le da ohrani vse zapise iz desne tabele
    3. Manj pogosto uporabljen, večinoma lahko uporabimo LEFT JOIN
  4. 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.

  1. Uporaba JOIN ukazov:
    1. Določimo tabele, ki jih želimo povezati
    2. Izberemo ustrezno vrsto JOIN-a glede na potrebe
    3. Definirajmo pogoj povezovanja z ON ali USING
  2. Dobra praksa
    1. Vedno uporabljajmo vzdevke (aliase) za tabele
    2. Jasno določimo pogoje povezovanja
    3. Pazimo na NULL vrednosti pri zunanjem povezovanju
PRIMER
REZULTAT
  1. V tem primeru imamo dve tabeli:
    1. oddelki: vsebuje podatke o oddelkih (id_oddelek, ime_oddelka)
    2. 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;            
  2. 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;            
  3. 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;            
  4. 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;            
  5. 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;            
  6. 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;            

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.