|
[Grafika]
[WebTip]
[Fotografování]
[Galerie]
[MujMac]
[Printing]
|
|||||||||
|
|
||||||||||
|
|
|||||||||
|
Dnešní článek přináší objasnění
propojování více databázových tabulek v jednom SQL dotazu - v našem případě
SQL příkazu SELECT. Již v prvním článku, který se zabýval spoluprácí
PHP a MySQL, jsem nastínil problematiku vztahů mezi databázovými tabulkami.
Tabulky, které jsou spolu ve vztahu, jsou propojeny primárním a cizím klíčem,
což jsou položky v tabulkách, které mají pro navzájem související záznamy
stejnou hodnotu. Abychom si vše mohli předvést na příkladu, vytvoříme si
novou databázi s názvem např. '
Druhá tabulka bude mít následující strukturu:
Co která tabulka obsahuje za data by mělo být
jasné z názvu položek - jen uvádím, že v tabulce Nyní si do tabulek vložte několik pomyslných
zaměstnanců a vytvořte si několik pomyslných oddělení. Nebudu zde uvádět,
jak přidat údaje do tabulky, protože jsem se tomu věnoval někdy v
minulosti. Nyní již k propojení tabulek. Zde je jasné, že máme propojeny
tabulky
Dobrým zvykem je zde v příkazu SELECT uvádět názvy požadovaných položek ve tvaru 'tabulka.položka' a to z toho důvodu, že v rozsáhlejších databázích se mohou vyskytnout v několika tabulkách položky se shodným názvem, které bychom potom jen těžko jednoznačně identifikovali. Za klauzulí FROM musíme uvést všechny relevantní tabulky, ze kterých požadované položky pocházejí. Podmínka za klauzulí WHERE zajišťuje, že ve výsledku bude u každého zaměstnance vypsáno oddělení, které má stejné číslo, jaké je uvedeno u zaměstnance. To je celý princip propojování tabulek v jednom SQL dotazu. Vše se dá ještě kombinovat pomocí klauzulí GROUP BY a HAVING, ale protože tyhle články mají pouze nastínit problematiku jazyka SQL, odkážu zájemce na materiály, které se věnují přímo jazyku SQL (na internetu je jich mnoho i v češtině). Poslední, co zde u příkazu SELECT uvedu, je možnost výstupu z databáze v setříděné podobě. To se provádí pomocí klauzule ORDER BY, za kterou se uvádí položka tabulky, podle které se mají data na výstupu setřídit. Pokud bychom tedy chtěli vypsat jména a adresy všech zaměstnanců a chtěli bychom mít výpis tříděný abecedně podle jmen zaměstnanců, použili bychom:
Existuje i možnost sestupného třídění, stačí na konec zapsat modifikátor DESC:
Ve starších verzích MySQL nastal problém při třídění položek, jejichž hodnoty obsahovaly diakritické znaky. Tento problém by již však v současné verzi měl být vyřešen. Tím jsme dokončili stručný přehled možností SQL příkazu SELECT, v příštím článku se naučíme mazat a modifikovat záznamy v databázové tabulce.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||