Jednoduché.
INNER JOIN připojuje tabulku, a podle podmínky přiřazuje jednotlivé údaje z tabulky k jiným, to je myslím jasné.
Jenomže ty máš v tabulce UCI IDčka učitelů s IDčkama předmětů které učí, říká se tomu propojovací entita, a např učitelka půjde na mateřskou, ale ze školy ji nevyhodí, pouze je pryč, tak neučí, tím pádem není v tabulce UCI.
A ty máš vypsat všechny učitelé, ale podle podmínky by to ty na mateřské nevypsalo, protože nikde se nebude shodovat s ničím v tabulce UCI. Proto je tam to LEFT, které značí, že v levé tabulce od toho příkazu (tj OSOBA) nemusí se shodovat ta podmínka, takže pokud nebude i v té tabulce UCI tak to nevadí, jí to stejně vypíše, ale v atributech které budeš brát z tabulky UCI bude NULL.
To samé RIGHT JOIN, to je to samé, ale naopak, takže kdyby jsi k tabulce UCI připojoval OSOBA tak by jsi pouzil RIGHT JOIN
Kapiš?
Edit:\\ To že se podmínka nemusí shodovat jsem napsal špatně, to by znamenalo, že jí to může přiřadit k čemukoli, lépe řečeno, vypíše ji to, i pokud se nenajde shoda s tabulkou UCI, a ty atributy budou NULL. Krátký příklad:
Tabulka OSOBA
Kód: Vybrat vše
ID JMÉNO
--------------
1 Ondra
2 Martin
3 Dana
Tabulka UCI
Kód: Vybrat vše
IDucitele IDpredmetu HodinTydne
------------------------------------
1 2 5
1 5 1
2 1 15
2 3 7
Tvůj dotaz ovšem neodpovídá zadání
Protože ty máš vypsat název předmětu, ale nikde nepřipojuješ tabulku předměty, tj zjistíš maximálně IDčko předmětu, ne jeho název
Ale tvůj dotaz by vrátil něco takového
Kód: Vybrat vše
Jméno IDpredmetu
--------------------------
Ondra 2
Ondra 5
Martin 1
Martin 3
Dana NULL
Aby dotaz byl úplný, vypadal by asi takto
Kód: Vybrat vše
SELECT jmeno, prijmeni, adresa, nazev
(FROM osoba LEFT JOIN uci ON (osoba.oc_cislo = uci.os_cislo))
INNER JOIN predmet ON uci.IDpredmetu = predmet.IDpredmetu
WHERE adresa IN (‘Liberec’, ‘Praha’) AND vek <= 20
ORDER BY prijmeni
Pokud děláte v MSSQL tak to musíš uzavřít do závorek ten druhý řádek, já už to udělal, ale pokud děláš např MySQL tak tam nemusíš mít ty závorky, a místo INNER JOIN stačí jenom JOIN
A jěště bych ti doporučil přejmenovávání tabulek.