Vazby mezi tabulkami (získávání dat z více tabulek, druhy spojení)
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
N:M
N:M je méně častým typem relace, ovšem v určitých případech jediným, který může danou situaci
řešit. Tato relace umožňuje, aby několika záznamům v první tabulce odpovídalo několik záznamů
v tabulce druhé. Na rozdíl od předchozích dvou typů relací je u této nutné vytvořit tzv. spojovací
tabulku. Jedná se o tabulku, díky níž je relaci vůbec možné uskutečnit. Této relace se dosahuje právě
pomocí spojovací tabulky, která spojuje dvě relace typu 1:N.
Příklad: pacienti přišli v určité dny k lékaři, který jim každý den předepsal nějaký lék. Dvěma různým
pacientům však mohl předepsat lék se stejným ID. Informace o takovém léku jsou pak uloženy v další tabulce.
Získávání dat z více tabulek
Chceme-li získat data z více tabulek a obdržet výsledek jako jeden řetězec díky jedinému dorazu,
je nutné využít funkci spojování tabulek. Existuje několik druhů spojení, ty jsou uvedeny dále.
PAD Programování a databáze
Téma 6
Školní rok 2017/2018
2/2
Jan Švábík, V4D
Druhy spojení
Klauzule WHERE
Jde o nejjednodušší způsob propojení (avšak nejvýše dvou) tabulek. Tabulky jsou propojeny na
základě jedné společné hodnoty. Viz následující příklad.
SELECT z.id_zakaznika, z.jmeno, o.id_objednavky, o.cena FROM zakaznici z,
objednavky o WHERE z.id_zakaznika = o.id_zakaznika;
JOIN obecně
Umožňuje více způsobů spojení. Obecně vypadá jeho klauzle následovně.
SELECT [*] [seznam_polozek_vystupni_sestavy] FROM prvni_tabulka DRUH_SPOJENI
druha_tabulka [ON podminka_spojeni];
V podmínce spojení musí být slučovaná pole (primární klíč & cizí klíč) stejného datového typu,
musí obsahovat stejný druh dat, nemusí však mít stejný název.
INNER JOIN
Viz příklad u klauzule WHERE (výlučné spojení) – spojení je provedeno na základě shody jednoho
nebo více společných atributů; změnou pořadí tabulek dostaneme stejný výběr, jen se změněným
pořadím.