120 likes | 250 Views
Úvod do databázových systémů. Cvičení 05 Joins , isNull , case when. Ing. Pavel Bednář pavel.bednar@vsb.cz http://pavelbednar.aspone.cz. JOIN. Klasické spojení dvou tabulek na základě společného atributu.
E N D
Úvod do databázových systémů Cvičení 05 Joins, isNull, case when Ing. Pavel Bednář pavel.bednar@vsb.cz http://pavelbednar.aspone.cz
JOIN • Klasické spojení dvou tabulek na základě společného atributu. • Spojí pouze záznamy z levé (první) relace, které mají shodný záznam v pravé (druhé) relaci. • Záznamy z první tabulky, které nemají shodný záznam na pravé straně, nebudou ve výsledné relaci.
JOIN • Select* fromStudent s JoinVyznamenani v Ons.login = v.login
LEFT JOIN • Výsledná relace bude obsahovat všechny záznamy z levé relace i když nemají shodné záznam v relaci na pravé straně. • Všechny atributy relace z pravé strany budou NULL pokud záznam v levé relaci nemá shodný záznam v relaci na pravé straně.
LEFT JOIN • Select* fromStudent s LEFT JoinVyznamenani v Ons.login = v.login
RIGHT JOIN • Výsledná relace bude obsahovat všechny záznamy z pravé relace i když nemají shodné záznam v relaci na levé straně. • Všechny atributy relace z levé strany budou NULL pokud záznam v pravé relaci nemá shodný záznam v relaci na levé straně.
RIGHT JOIN • Select* fromStudent s RIGHT JoinVyznamenani v Ons.login = v.login
IsNull (atribute, replacewith) • Pokud je nějaký atribut NULL, nahradí ho jinou hodnotou.
IsNull • Selectlogin, IsNull(Id_fakulta,-1) fromStudent s
Podmínka CASE WHEN • Jednoduchý rozhodovací blok • Syntaxe: CASE WHEN conditionTHEN value1 ELSE value2 END • Lze použít v agregačních funkcích jako SUM(), atd.
CASE WHEN • Kolik záznamů nemá vyplněnou fakultu • Select sum(case when s.id_Fakultais null then 0 else1 end) as PocetfromStudent s
Count(distinctatribute) • Spočítá počet unikátních výskytů atributu. • Selectcount(distinct Věk) as PocetFrom Student