Nachádzate sa tu
09. Access JOIN
Doposiaľ sme pracovali len s jednou tabuľkou na ktorej sme si ukázali základne operácie. Databáza však nie je o jednej tabuľke aleo sústave logicky usporiadaných tabuliek, ktoré je navzájom možne prepájať a tak tvoriť dátové výstupy presne na mieru, pri maximálnej optimalizácii dátového priestoru.
Prečo držať dáta v rôznych tabuľkách? Odpoveď znie kôli prehľadnosti a úspore dátového priestoru. Uvažujme o tabuľke ktorá ma 1 000 000 riadkov a 10 stĺpcov, pričom jedným z nich je aj krajina z ktorej je zákazník. Teda máme 1 000 000 buniek obsahujúcich rôzne krajiny, čo zaberie relatívne veľa priestoru. Pre účely fakturácie by sme potrebovali vedieť DPH, čo by znamenalo ďalších 1 000 000 riadkov. Dátový priestor = peniaze, lebo miesto niečo stojí. Namiesto toho stačí vyrobiť v databáze druhú malú tabuľku, ktorá bude obsahovať len 200 riadkov a dva stĺpce, Krajina a sadzba DPH. Prostredníctvom query a príkazu join tieto dve tabuľky spojíme a ku krajinám dotiahneme daňovú sadzbu. Ak 1 riadok tabulky predstavuje 1 KB tak sme ušetrili 999 800 KB priestoru.
Na to aby sme dokázali dve tabuľky spojiť potrebujeme stĺpce s rovnakým typom obsahu v oboch tabuľkách.
Na ilustraciu použijeme iný príklad, kde pre korešpondenčné účely do tabuľky zákazníkov, dotiahneme ku mestu odkaľ je zákazník Poštové smerové číslo.
V tabuľke zákazníkov máme teda uvedené mesto, z ktorého je zákazník. Pre učely korešpondencie potrebujeme ku tomuto mestu dotiahnuť aj jeho PSČ, ktoré sa nachádza v tabuľke tabulka_PSC ktorá obsahuje dva stĺpce, PSC a Mesto. Join tvoríme jednoducho a to potiahnutím konkrétneho poľa z jednej tabuľky do druhej. Treba mať na pamäti, že polia, cez ktore chceme spojiť tabuľky musia obsahovať zhodné hodnoty. Po tom ako máme vytvorený join, z jednotlivých tabuliek vyberieme polia, ktoré chceme vo výsledku zobraziť.
V zásade rozlišujeme tri druhy joinov LEFT, RIGHT a INNER JOIN. Ich rozdiel spočíva v základnom spájaní množín, tak ako to ukazuje nasledovný obrázok.
Left Join ku hodnotám z ľavej (hlavnej) tabuľky dotiahne hodnoty z pravej. Teda ak by sme v tabuľke zákazníkov mali Zvolen, ale ten by nebol v tabuľke PSC, vo výstupe by sa síce objavil Zvolen, ale na mieste PSČ by bola prázdna hodnota.
Right join obdobne ku hodnotám z pravej tabuľky dotiahne hodnoty z ľavej.
Inner join spraví prienik tabuliek, a teda spojí len tie hodnoty, ktoré sa nachádzajú v oboch tabuľkách.
Nastavenie typu joinu sa robí dvojklikom na join spojovník.
Výstup Query vyzerá nasledovne (Left join):
V tomto tutoriáli sme sa zamerali na spájanie tabuliek, čo predstavuje jeden zo základných kameňov práce s databázou. V nasledovnom tutoriáli sa bližšie pozrieme na SQL syntax, resp. ako napísať Join v SQL.