|
[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. Autor: Marek
Bražina
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||