Tento článok patrí k súboru článkov o jazyku SQL v Accesse. Uvádza sa v ňom spôsob, akým sa píše klauzula FROM, a obsahuje príklady na znázornenie rôznych techník, ktoré môžete použiť v klauzule FROM.
Zdroje údajov v príkaze SELECT sa zadávajú v klauzule FROM. Klauzula FROM môže obsahovať aj operáciu JOIN. Operácia JOIN sa používa na spárovanie a skombinovanie údajov z dvoch zdrojov údajov, ako sú napríklad dve tabuľky alebo jedna tabuľka a jeden dotaz.
Prehľad o jazyku SQL v Accesse nájdete v článku SQL v Accesse: základné koncepty, slovník a syntax.
Obsah článku
Určenie zdrojov údajov
Klauzula FROM v príkaze SELECT určuje tabuľky alebo dotazy obsahujúce údaje, ktoré bude klauzula SELECT používať.
Predpokladajme, že chcete zistiť telefónne číslo konkrétneho zákazníka. Ak má tabuľka obsahujúca pole s týmito údajmi názov tblCustomer, klauzula FROM môže vyzerať takto:
FROM tblCustomer
Názov môžete uzavrieť do hranatých zátvoriek. Ak názov neobsahuje žiadne medzery a špeciálne znaky (napríklad interpunkčné znamienka), hranaté zátvorky nie sú povinné. Ak názov obsahuje medzery alebo špeciálne znaky, hranaté zátvorky musíte použiť.
Tip: Názov, ktorý obsahuje medzery, sa ľahšie číta a ušetrí čas pri návrhu formulárov a zostáv, no budete mať viac písania pri zadávaní príkazov SQL. Tento fakt by ste mali zvážiť pri pomenovaní objektov v databáze Accessu.
Použitie náhradných názvov zdrojov údajov
Ak chcete pri odkazovaní na tabuľku v príkaze SELECT použiť iný názov tabuľky, môžete v klauzule FROM použiť alias tabuľky. Alias tabuľky je názov priradený k zdroju údajov v dotaze, keď sa ako zdroj údajov používa výraz, prípadne na uľahčenie písania a čítania príkazu SQL. Môže to byť užitočné napríklad v prípade, že je názov zdroja údajov dlhý alebo sa ťažko píše, a to najmä vtedy, ak sa používa viacero polí s rovnakým názvom z rôznych tabuliek.
Ak chcete napríklad vybrať údaje z dvoch polí, ktoré majú názov ID, pričom jedno pole pochádza z tabuľky tblCustomer a druhé z tabuľky tblOrder, klauzula SELECT môže vyzerať takto:
SELECT [tblCustomer].[ID], [tblOrder].[ID]
Ak v klauzule FROM použijete aliasy tabuliek, dotaz sa bude ľahšie písať. Klauzula FROM s aliasmi tabuliek môže vyzerať takto:
FROM [tblCustomer] AS [C], [tblOrder] AS [O]
Aliasy tabuliek potom môžete použiť v klauzule SELECT takto:
SELECT [C].[ID], [O].[ID]
Poznámka: Pri používaní aliasu tabuľky môžete na tabuľku v príkaze SQL odkazovať pomocou aliasu alebo celého názvu tabuľky.
Spojenie súvisiacich údajov
Ak potrebujete skombinovať dvojice záznamov z dvoch zdrojov údajov do jedného záznamu vo výsledku dotazu, môžete vytvoriť spojenie. Spojenie je operácia jazyka SQL, ktorá určuje, ako navzájom súvisia dva zdroje údajov a či sa majú do výsledku zahrnúť údaje z jedného zdroja, ak v druhom zdroji neexistujú žiadne zodpovedajúce údaje.
Na skombinovanie informácií z dvoch zdrojov údajov je potrebné vykonať operáciu spojenia v poli, ktoré majú zdroje spoločné. Keď sa hodnoty uložené v tomto poli zhodujú, údaje zo záznamov sa skombinujú vo výsledkoch.
Okrem kombinovania údajov možno operáciu spojenia použiť aj na určenie, či sa majú do výsledkov zahrnúť záznamy z niektorej z tabuliek, ak v súvisiacej tabuľke neexistuje zodpovedajúci záznam.
Predpokladajme napríklad, že chcete v dotaze použiť údaje z dvoch tabuliek: tblCustomer a tblOrder. Obidve tabuľky obsahujú pole s názvom CustomerID, ktoré slúži na identifikáciu zákazníka. Každý záznam v tabuľke tblCustomer môže mať jeden alebo viacero zodpovedajúcich záznamov v tabuľke tblOrder a zodpovedajúce hodnoty možno určiť pomocou hodnôt v poli CustomerID.
Ak chcete tabuľky spojiť tak, aby dotaz skombinoval záznamy z tabuliek a vylúčil záznamy z niektorej z tabuliek, ak v druhej tabuľke neexistuje zodpovedajúci záznam, klauzula FROM môže vyzerať takto (do príkladu bol pridaný zlom riadka, aby bol čitateľnejší):
FROM [tblCustomer] INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]
V Accesse sa údaje spájajú v klauzule FROM príkazu SELECT. Existujú dva typy spojení: vnútorné a vonkajšie. Jednotlivé typy spojení sú vysvetlené v nasledujúcich častiach.
Vnútorné spojenia
Vnútorné spojenia sú najčastejším typom spojenia. Po spustení dotazu s vnútorným spojením sa do výsledkov dotazu zahrnú len záznamy, ktoré majú v oboch spájaných tabuľkách spoločnú hodnotu.
Vnútorné spojenie má nasledujúcu syntax (do príkladu bol pridaný zlom riadka, aby bol čitateľnejší):
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field2
Nasledujúca tabuľka popisuje rôzne časti operácie INNER JOIN.
Časť |
Popis |
tabuľka1 , tabuľka2 |
Názvy tabuliek, ktorých záznamy sa spájajú. |
pole1 , pole2 |
Názvy spojených polí. Ak nie sú číselné, musia mať rovnaký typ údajova obsahovať rovnaký druh údajov, ale nemusia mať rovnaký názov. |
compopr |
Ľubovoľný operátor relácie porovnávania: „=“, „<“, „>“, „<=“, „>=“ alebo „<>“. |
Vonkajšie spojenia
Vonkajšie spojenia sú podobné vnútorným spojeniam, pretože dotazu oznámia, ako skombinovať informácie z dvoch zdrojov. Líšia sa, pretože tiež určujú, či sa majú zahrnúť údaje, v ktorých neexistuje žiadna spoločná hodnota. Vonkajšie spojenia sú smerové: môžete určiť, či sa majú do spojenia zahrnúť všetky záznamy z prvého zdroja údajov zadaného v spojení (nazývané ľavé spojenie), alebo zahrnúť všetky záznamy z druhého zdroja údajov do spojenia (tzv. pravé spojenie).
Vonkajšie spojenie má takúto syntax:
FROM tabuľka1 [LEFT | RIGHT ] JOIN tabuľka2
ON tabuľka1.pole1 operpor tabuľka2.pole2V nasledujúcej tabuľke sú popísané rôzne časti operácií LEFT JOIN a RIGHT JOIN.
Časť |
Popis |
tabuľka1 , tabuľka2 |
Názvy tabuliek, ktorých záznamy sa spájajú. |
pole1 , pole2 |
Názvy polí, ktoré sa spájajú. Polia musia obsahovať rovnaký typ údajov, ako aj druh údajov, ale nemusia mať rovnaký názov. |
compopr |
Ľubovoľný operátor relácie porovnávania: „=“, „<“, „>“, „<=“, „>=“ alebo „<>“. |
Ďalšie informácie o spojeniach nájdete v článku Spojenie tabuliek a dotazov.