- "Prave" baze sestavlja več tabel
- Pogosto želimo kot rezultat dobiti podatke, ki se "skrivajo" v več tabelah
SELECT in več tabel
Združene tabele
Združene tabele
Združevanje tabel
|
|
Združevanje tabel
Kako do določenih stolpcev?
Združevanje na osnovi ključev
Združevanje
Relacije:
Ujemanje (relacije) izvedemo preko ključev
Primarni ključ
Tuji (zunanji) ključ
Ključi
Tuj (zunanji) ključ:
| Primarni ključ:
|
Ključi
Izbor le določenih vrednosti
SELECT * FROM zaposleni, naslovi
WHERE IDZaposlenega = "MK1
"
Koliko zapisov dobimo?
Koliko zapisov dobimo?
SELECT * FROM zaposleni, naslovi
WHERE naslovi.IDZaposlenega = zaposleni.IDZaposlenega = "MK1
Notranji stik
Samo združevanje ustreznih vrstic (brez "filtriranja")
Stike običajno izvajamo preko ključev (primarni s tujim)
Notranji stik
Če obstajajo zapisi v tabeli zaposlenih, ki nimajo pripadajočega zapisa v tabeli naslovov, jih v tabeli ni.
Opombe
OI
OI
Vrstni red pomemben za vrstni red "zadetkov"
Združevanje - zgled
Združevanje - zgled
Zgleda
Kateri glasbenik je posnel pesem 'Exodus'?
Zgleda
Za vsak album skupine 'Beatles' izpiši njegov naslov in število skladb, ki so na njem
Zunanji stik
Kaj, če bi želeli dobiti pare, kjer leva (ali desna) tabela nima para
OI
Oracle
LEFT OUTER JOIN
OI - LEFT OUTER JOIN
SELECT oi.leto, oi.kraj, kraji.drzava
FROM oi LEFT OUTER JOIN kraji ON
(oi.kraj = kraji.kraj)
SELECT oi.leto, oi.kraj, kraji.drzava
FROM kraji LEFT OUTER JOIN oi ON
(oi.kraj = kraji.kraj)
RIGHT OUTER JOIN
OI – RIGHT OUTER JOIN
SELECT oi.leto, oi.kraj, kraji.drzava
FROM kraji RIGHT OUTER JOIN oi ON
(oi.kraj = kraji.kraj)
SELECT oi.leto, oi.kraj, kraji.drzava
FROM oi RIGHT OUTER JOIN kraji ON
(oi.kraj = kraji.kraj)
OI – OUTER JOIN
SELECT oi.leto, oi.kraj, kraji.drzava
FROM oi LEFT OUTER JOIN kraji ON
(oi.kraj = kraji.kraj)
SELECT oi.leto, oi.kraj, kraji.drzava
FROM oi RIGHT OUTER JOIN kraji ON
(oi.kraj = kraji.kraj
FULL OUTER JOIN
Obstaja tudi FULL OUTER JOIN
OI – FULL OUTER JOIN
SELECT oi.leto, oi.kraj, kraji.drzava
FROM oi FULL OUTER JOIN kraji ON
(oi.kraj = kraji.kraj)
OI – JOIN(i)
SELECT oi.leto, oi.kraj, kraji.drzava
| SELECT oi.leto, oi.kraj, kraji.drzava
|
SELECT oi.leto, oi.kraj, kraji.drzava
| SELECT oi.leto, oi.kraj, kraji.drzava
|
Vsa združevanja
Zunanje
Celoten stavek SELECT
Primer
Poizvedba
Vrstni red izvajanja
(7)SELECT <seznam> (8) DISTINCT (10) TOP
(1) FROM <leva table>
(3) <tip združevanja> JOIN <desna tabela>
(2) ON <pogoji združevanja>
(4) WHERE <omejitveni pogoji>
(5) GROUP BY <razvrščanje v skupine>
(6) HAVING <omejitveni pogoji>
(9) ORDER BY <urejanje>
Prvi korak
Drugi korak
obdržimo vrstice s TRUE
Zunanje združevanje
Where
Group By
S Having izločimo skupine
In sedaj so na vrsti stolpci
Celoten stavek SELECT