Spájanie zdrojov údajov v dotaze

Dôležité : Tento článok je strojovo preložený, prečítajte si vyhlásenie. Anglickú verziu tohto článku nájdete tu a môžete ju použiť ako referenciu.

Keď v rámci dotazu použijete viaceré zdroje údajov, pomocou spojení môžete obmedziť záznamy, ktoré sa majú zobraziť, na základe vzájomného vzťahu medzi nimi. Pomocou spojení môžete kombinovať záznamy z oboch zdrojov údajov, čím sa každá dvojica záznamov zo zdrojov stane jedným záznamom vo výsledkoch dotazu.

V tomto článku sú uvedené rozličné typy spojení a spôsoby ich použitia v rámci dotazu.

Poznámka : V tomto článku výrazov tabuľka sa používa na mysli zdroj údajov. Dotaz môžete použiť aj v spojenia rovnako ako tabuľku.

Prehľad

Vnútorné spojenie: zobrazenie riadkov, ak v oboch spojených tabuľkách existuje spoločná hodnota

Ľavé alebo pravé vonkajšie spojenie: zobrazenie všetkých riadkov z jednej tabuľky a zodpovedajúcich riadkov z druhej tabuľky

Úplné vonkajšie spojenie: zobrazenie všetkých riadkov z oboch tabuliek a ich skombinovanie, ak existuje spoločná hodnota

Krížové spojenie: všetky možné kombinácie riadkov

Nerovnaké spojenie: skombinovanie záznamov na základe nerovnosti hodnôt polí

Odstránenie spojenia

Prehľad

Spojenia majú k dotazom rovnaký vzťah ako vzťahy k tabuľkám: označujú, ako možno skombinovať údaje v dvoch zdrojoch na základe spoločných hodnôt údajov. Tu je znázornenie spojenia v návrhovom zobrazení dotazu, pričom vlastnosti spojenia sú otvorené v dialógovom okne:

Okno Spojenie – vlastnosti.

Táto čiara medzi tabuľkami predstavuje spojenia. Dvakrát kliknite na položku pripojiť sa na otvorenie Vlastnosti spojenia dialógovým oknom (znázornené) a kontrola alebo zmena spojenia.

Spojenia sú niekedy smerovo závislé. Táto oblasť dialógového okna zobrazuje, ktoré sú jednotlivé tabuľky v spojení a ktoré polia slúžia na spojenie tabuliek.

Táto oblasť určuje typ spojenia: možnosť 1 predstavuje vnútorné spojenie, možnosť 2 ľavé vonkajšie spojenie a možnosť 3 pravé vonkajšie spojenie.

Možno použiť polia z oboch tabuliek, pričom sa z oboch zobrazia údaje, ktoré sa vzťahujú na danú úlohu. Pri vnútornom spojení nie sú zahrnuté žiadne ďalšie údaje. Pri vonkajškom spojení sú súčasťou výsledkov dotazu aj nesúvisiace záznamy z jednej tabuľky.

Niektoré spojenia sa vytvoria automaticky

V mnohých prípadoch nemusíte na spojenia vôbec myslieť – ak medzi tabuľkami pridanými do dotazu už existuje vzťah, program Access vytvorí vnútorné spojenie, ktoré bude zodpovedať tomuto vzťahu. Práve toto chcete väčšinou dosiahnuť: t. j. spôsob, ktorým zabezpečíte správne skombinovanie údajov získaných z dvoch tabuliek tak, aby boli použité správne údaje z príslušnej tabuľky, a nič viac. V niektorých prípadoch však chcete, aby spojenie zahŕňalo viac údajov.

Typy spojení

Existujú štyri základné typy spojení: vnútorné spojenia, vonkajšie spojenia, krížové spojenia a nerovnaké spojenia. Krížové spojenia a nerovnaké spojenia predstavujú pokročilé typy spojení a používajú sa zriedkavo, mali by ste sa však s nimi oboznámiť, aby ste úplne porozumeli funkcii spojení.

Vnútorné spojenia: kombinujú sa len súvisiace údaje z oboch tabuliek

Vo vnútornom spojení program Access zahŕňa údaje z tabuľky, len ak existujú zodpovedajúce údaje aj v súvisiacej tabuľke, a naopak. Väčšinou budete používať práve vnútorné spojenia. Keď vytvoríte spojenie a neuvediete jeho typ, program Access predpokladá, že chcete vytvoriť vnútorné spojenie. Vnútorné spojenia sú užitočné, pretože umožňujú skombinovať údaje z dvoch zdrojov na základe spoločných hodnôt – takže údaje uvidíte len vtedy, ak existuje úplný obraz.

Vonkajšie spojenia: správne skombinované všetky súvisiace údaje plus všetky zvyšné záznamy z jednej tabuľky

Vonkajšie spojenie je podobné ako vnútorné spojenie, pridáva však zvyšné riadky z jednej z tabuliek. Vonkajšie spojenia sú smerovo závislé: ľavé vonkajšie spojenie zahŕňa všetky záznamy z ľavej tabuľky – prvej tabuľky v spojení – a pravé vonkajšie spojenie zahŕňa všetky záznamy z pravej tabuľky – druhej tabuľky v spojení.

Úplné vonkajšie spojenia: všetky údaje skombinované v prípustných prípadoch

V niektorých systémoch môže vonkajšie spojenie zahŕňať všetky riadky z oboch tabuliek, pričom zhodné riadky sa skombinujú. Táto funkcia sa označuje ako úplné vonkajšie spojenie a program Access ju explicitne nepodporuje. Na dosiahnutie rovnakého efektu však môžete použiť krížové spojenie a kritériá.

Krížové spojenia: všetky údaje skombinované všetkými možnými spôsobmi

Vo väčšine prípadov je krížové spojenie vedľajším efektom toho, keď do dotazu pridáte dve tabuľky a potom ich zabudnete spojiť. Program Access to interpretuje tak, že chcete vidieť každý záznam z jednej tabuľky skombinovaný s každým záznamom z druhej tabuľky – všetky možné kombinácie záznamov. Pretože nie je možné skombinovať žiadne údaje, tento druh spojenia zriedkakedy poskytuje užitočné výsledky. Existuje však niekoľko prípadov, keď je krížové spojenie práve to, čo potrebujete.

Nerovnaké spojenia: rovnaké ako bežné spojenia, na skombinovanie riadkov sa však používa odlišné porovnanie

Nerovnaké spojenia používajú na porovnanie hodnôt a určenie, či a ako sa majú údaje skombinovať, iný operátor ako znamienko rovnosti (=). Nerovnaké spojenia nie sú explicitne podporované, na dosiahnutie rovnakého efektu však môžete použiť krížové spojenie a kritériá.

Na začiatok stránky

Vnútorné spojenie: zobrazenie riadkov, ak v oboch spojených tabuľkách existuje spoločná hodnota

Ak chcete zobraziť len tie riadky, ktoré majú zhodné hodnoty v pripojenom poli, môžete použiť vnútorné spojenie. Program Access vytvorí vnútorné spojenia automaticky.

Vnútorné spojenia predstavujú najčastejšie používaný typ spojenia. Informujú dotaz o tom, že riadky z prvej zo spojených tabuliek zodpovedajú riadkom v inej tabuľke, a to na základe spoločných hodnôt v spojených poliach. Ak je spustený dotaz s vnútorným spojením, operácie dotazu budú obsahovať len tie riadky, ktoré obsahujú spoločnú hodnotu v oboch spojených tabuľkách.

Ako sa vnútorné spojenie používa?

Ak chcete vytvoriť vnútorné spojenie, pole z jedného zdroja údajov presuňte do poľa v inom zdroji údajov v mriežke návrhu dotazu. Program Access spojí obe tabuľky v týchto poliach a zobrazí medzi nimi čiaru.

Automatické vnútorné spojenia

Ak chcete použiť vnútorné spojenie, väčšinou nie je potrebné urobiť nič. Ak už existujú vzťahy medzi tabuľkami, ktoré chcete pridať k dotazu, program Access automaticky vytvorí vnútorné spojenie medzi každým párom súvisiacich tabuliek pri pridaní týchto tabuliek. Ak je zabezpečená referenčná integrita, program Access zobrazí nad prepájacou čiarou číslicu 1, ktorá označuje tabuľku na strane „one“ vzťah „one-to-many“, alebo zobrazí symbol nekonečna (), ktorý označuje tabuľku na strane „many“.

Aj keď ste vzťahy ešte nevytvorili, program Access automaticky vytvorí vnútorné spojenia, ak do dotazu pridáte dve tabuľky, ktoré obe obsahujú pole s rovnakým názvom alebo rovnakým alebo kompatibilným typom údajov, ak jedno z týchto polí je primárny kľúč pre túto tabuľku. Symboly „one“ a „many“ sa v tomto prípade nezobrazia, pretože nie je zabezpečená referenčná integrita.

Ak do dotazu pridáte dotazy a vzťahy medzi danými dotazmi ste ešte nevytvorili, program Access automaticky nevytvorí vnútorné spojenia medzi danými dotazmi alebo medzi dotazmi a tabuľkami. Vo všeobecnosti platí, že by ste ich mali vytvoriť sami (presunutím poľa z jedného zdroja údajov do poľa v inom zdroji údajov). V opačnom prípade môže dôjsť k vzniku krížového spojenia s mätúcimi výsledkami, pokiaľ jeho vytvorenie nebolo vaším zámerom.

Syntax SQL pre vnútorné spojenie

Vnútorné spojenia sa v jazyku SQL zadávajú v klauzule FROM, ako je to uvedené nižšie:

FROM tabuľka1 INNER JOINtabuľka2 ON tabuľka1.pole1operpor tabuľka2.pole2

Operácia INNER JOIN má tieto časti:

Č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.

operpor

Ľubovoľný operátor relácie porovnávania: „=“, „<“, „>“, „<=“, „>=“ alebo „<>“.

Ďalšie informácie o syntaxe vnútorného spojenia nájdete v časti Operácia INNER JOIN.

Na začiatok stránky

Ľavé alebo pravé vonkajšie spojenie: zobrazenie všetkých riadkov z jednej tabuľky a zodpovedajúcich riadkov z druhej tabuľky

Vonkajšie spojenie informuje dotaz o tom, že aj keď niektoré riadky na oboch stranách spojenia sú rovnaké, dotaz by mal obsahovať všetky riadky z tabuľky, ako aj tie riadky z inej tabuľky, ktoré zdieľajú spoločnú hodnotu na oboch stranách spojenia (skombinovanie údajov, keď určitý riadok obsahujú obe tabuľky).

Vonkajšie spojenia delíme na ľavé vonkajšie spojenie a na pravé vonkajšie spojenie. Pri ľavom vonkajšom spojení obsahuje dotaz všetky riadky z prvej tabuľky v klauzule FROM príkazu SQL a len tie riadky z inej tabuľky, ktorých spojené pole obsahuje hodnoty spoločné pre obe tabuľky. Pri pravom vonkajšom spojení obsahuje dotaz všetky riadky z druhej tabuľky v klauzule FROM príkazu SQL a len tie riadky z inej tabuľky, ktorých spojené pole obsahuje hodnoty spoločné pre obe tabuľky.

Poznámka : Dá sa ľahko spoznať, ktorá tabuľka je ľavá tabuľka alebo pravá tabuľka v danom spojenie dvakrát kliknite na požadované spojenie a potom hľadá v dialógové okno Vlastnosti spojenia. Alebo v zobrazení SQL, môžete preskúmať Klauzula FROM spojenie Podrobnosti.

Keďže niektoré riadky z jednej strany vonkajšieho spojenia nemajú zodpovedajúce riadky v inej tabuľke, niektoré polia vrátené vo výsledkoch dotazu z danej tabuľky budú prázdne, ak im riadky nezodpovedajú.

Ako sa vonkajšie spojenie používa?

Vonkajšie spojenie vytvoríte úpravou existujúceho vnútorného spojenia. Ak neexistuje žiadne vnútorné spojenie, vytvorte ho a potom ho zmeňte na vonkajšie spojenie.

Zmena vnútorného spojenia na vonkajšie spojenie

  1. V návrhovom zobrazení dotazu dvakrát kliknite na požadované spojenie.

    Zobrazí sa dialógové okno Spojenie – vlastnosti.

  2. V dialógové okno Spojenie – vlastnosti, Všimnite si možnosti zobrazené vedľa možnosti 2 a možnosti 3.

  3. Kliknite na tlačidlo Možnosti, ktoré chcete použiť, a potom kliknite na položku tlačidlo OK.

  4. Program Access zobrazí spojenie, ako aj šípku smerujúcu od zdroja údajov, ktorý má obsahovať všetky riadky, k zdroju údajov, ktorý má obsahovať len tie riadky, ktoré spĺňajú podmienky spojenia.

Nejednoznačné vonkajšie spojenia

Ak vytvoríte dotaz, ktorý obsahuje operácie LEFT JOIN a INNER JOIN, program Access možno nedokáže určiť, ktorú operáciu spojenia má vykonať ako prvú. Vzhľadom na odlišné výsledky v závislosti od toho, či sa ako prvé vykoná ľavé spojenie alebo alebo vnútorné spojenie, program Access zobrazí chybové hlásenie o nejednoznačných vonkajších spojeniach.

Ak chcete odstrániť túto chybu, zmeňte dotaz tak, aby bolo jasné, ktoré spojenie sa má vykonať ako prvé.

Vonkajšie spojenia a možnosť aktualizácie dotazu

V aplikácii programu Access možno aktualizovať pole v dotaze s viacerými tabuľkami, len ak sú splnené nasledujúce podmienky:

  • Pole je z tabuľky typu „most-many“ v rámci dotazu – tabuľka, ktorá vyhľadáva údaje v inej tabuľke.

  • Výstup dotazu zahŕňa hlavný kľúč z tabuľky typu „most-many“.

  • Ak je súčasťou vonkajšieho spojenia tabuľka typu „most-many“, nachádza sa na vnútornej strane spojenia: ľavá tabuľka ľavého vonkajšieho spojenia alebo pravá tabuľka pravého vonkajšieho spojenia.

Ak ktorákoľvek z týchto podmienok nie je splnená, pole bude len na čítanie, či už v údajovom hárku dotazu alebo v zobrazení založenom na dotaze.

Syntax SQL pre vonkajšie spojenie

Vonkajšie spojenia sú v SQL určené v klauzule FROM, ako je zobrazené nižšie:

FROM tabuľka1 [LEFT | RIGHT ] JOIN tabuľka2
ON tabuľka1.pole1 operpor tabuľka2.pole2

Operácie LEFT JOIN a RIGHT JOIN majú tieto časti:

Č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.

operpor

Ľubovoľný operátor relácie porovnávania: „=“, „<“, „>“, „<=“, „>=“ alebo „<>“.

Ďalšie informácie o syntaxe vonkajšieho spojenia nájdete v časti Operácie LEFT JOIN, RIGHT JOIN.

Na začiatok stránky

Úplné vonkajšie spojenie: zobrazenie všetkých riadkov z oboch tabuliek a ich skombinovanie, ak existuje spoločná hodnota

Ak chcete zobraziť všetky riadky z dvoch tabuliek a spojiť ich na základe spoločných hodnôt, použite úplné vonkajšie spojenie. Program Access explicitne nepodporuje úplné vonkajšie spojenia, na dosiahnutie rovnakého efektu však môžete použiť krížové spojenie a kritériá.

  1. Vytvorte dotaz a pridajte dve tabuľky. Ak program Access vytvorí spojenia, odstráňte ich.

  2. Pridajte akékoľvek požadované polia pre výstup dotazu.

  3. Pridajte spájacie polia z oboch tabuliek a zrušte pri nich začiarknutie políčka v riadku Zobraziť.

  4. V mriežke návrhu dotazu pod spájacím poľom prvej tabuľky zadajte spájacie pole druhej tabuľky v riadku Kritériá. Ak majú spájacie polia rovnaký názov poľa, nezabudnite pridať názov tabuľky, keď sa na ne odvolávate.

  5. V riadku Alebo pod zadaným kritériom zadajte položku Is Null.

  6. V nasledujúcom riadku Alebo (priamo pod prvým riadkom) pod spájacím poľom druhej tabuľky zadajte položku Is Null.

Dotaz vráti kombinovanú množinu zloženú z:

  • riadkov, pri ktorých sa spojené polia zhodujú a údaje sú príslušne skombinované (v podstate vnútorné spojenie),

  • riadkov, pri ktorých sa v prvej tabuľke nenachádza žiadna hodnota pre spojené pole (v podstate vonkajšia strana ľavého vonkajšieho spojenia),

  • riadkov, pri ktorých sa v druhej tabuľke nenachádza žiadna hodnota pre spojené pole (v podstate vonkajšia strana pravého vonkajšieho spojenia).

Na začiatok stránky

Krížové spojenie: všetky možné kombinácie riadkov

Vždy, keď do dotazu zahrniete tabuľky, ale nespojíte ich, vznikne krížové spojenie. Program Access skombinuje každý riadok z jednej tabuľky s každým riadkom ďalšej tabuľky, výsledkom čoho je to, čo sa označuje ako krížový produkt alebo karteziánsky súčin. Toto zvyčajne nechcete dosiahnuť, krížové spojenia však môžu byť užitočné pri skúmaní hypotetických možností.

Dôvody používania krížového spojenia

Krížové spojenie použite, ak chcete preskúmať všetky možné kombinácie riadkov medzi dvoma tabuľkami alebo dotazmi. Predpokladajme, že váš podnik má za sebou úspešný rok a uvažujete nad poskytnutím zliav zákazníkom. Môžete vytvoriť dotaz, ktorý sčíta nákupy jednotlivých zákazníkov, vytvorí malú tabuľku s viacerými možnými percentami zliav a spojí ich do ďalšieho dotazu, ktorý vykoná krížové spojenie. Krížový produkt zobrazí množinu hypotetických zliav pre jednotlivých zákazníkov, teda práve to, čo potrebujete.

Ako sa krížové spojenie používa?

Pridajte dve tabuľky do dotazu, pričom medzi nimi nevytvárajte spojenie a do výstupu dotazu zahrňte polia z oboch tabuliek. Program Access skombinuje každý riadok z každej tabuľky alebo dotazu, ktorý nie je explicitne spojený s ľubovoľnou inou tabuľkou alebo dotazom, do každého druhého riadku vo výsledkoch dotazu. Vezmime do úvahy prípad zliav z predchádzajúceho odseku. Predpokladajme, že máte 91 zákazníkov a chcete sa pozrieť na päť možných percent zliav. Krížové spojenie vytvorí 455 riadkov (súčin 91 a 5).

Ak pridané tabuľky súvisia, program Access vytvorí vnútorné spojenie automaticky. Ak chcete vytvoriť krížové spojenie, toto automatické spojenie môžete v prípade potreby odstrániť.

Ako vidíte, neúmyselné krížové spojenia môžu vytvoriť vo výsledkoch dotazu veľké množstvo riadkov. Okrem toho sú tieto výsledky vo všeobecnosti nezmyselné, pretože riadky nie sú skombinované na základe spoločnej hodnoty a ich kombinácie ničomu nezodpovedajú.

Na začiatok stránky

Nerovnaké spojenie: skombinovanie záznamov na základe nerovnosti hodnôt polí

Spojenia sa nemusia zakladať na zhode spojených polí. Spojenie môže byť založené na ľubovoľnom operátore porovnávania, ako je napríklad operátor väčšie než (>), menšie než (<) alebo nerovná sa (<>). Spojenia nezaložené na zhode sa nazývajú nerovnaké spojenia.

Ak chcete spojiť riadky z dvoch zdrojov údajov na základe hodnôt polí, ktoré nie sú zhodné, použijete nerovnaké spojenie. Nerovnaké spojenia sú zvyčajne založené na operátoroch porovnávania, ako je napríklad operátor väčšie než (>), menšie než (<), väčšie alebo rovné (>=) alebo menšie alebo rovné (<=). Nerovnaké spojenia založené na operátore nerovná sa (<>) môžu vrátiť takmer rovnaký počet riadkov ako pri krížových spojeniach, pričom výsledky môžu byť ťažko interpretovateľné.

Ako sa nerovnaké spojenie používa?

Program Access explicitne nepodporuje nerovnaké spojenia v návrhovom zobrazení, na dosiahnutie rovnakého efektu však môžete použiť krížové spojenie a kritériá:

  1. Vytvorte dotaz a pridajte dve tabuľky pre nerovnaké spojenie. Ak program Access automaticky vytvorí akékoľvek spojenia, odstráňte ich.

  2. Pridajte požadované výstupné polia.

  3. Pridajte spájacie pole z prvej tabuľky a zrušte začiarknutie políčka v riadku Zobraziť.

  4. V riadku Kritériá zadajte operátor nerovnosti, ktorý chcete použiť, a za ním spájacie pole druhej tabuľky.

Dotaz vráti riadky, v ktorých sú skombinované údaje z daných dvoch tabuliek na základe zadanej nerovnosti.

Na začiatok stránky

Odstránenie spojenia

Ak program Access automaticky vytvorí spojenie, ktoré nechcete, alebo ak ste spojenie vytvorili omylom – napríklad spojenie medzi dvoma poľami s nezhodnými typmi údajov – takéto spojenie môžete odstrániť.

  1. V mriežke návrhu dotazu kliknite na požadované spojenie.

  2. Stlačte kláves odstrániť.

-alebo-

  • V mriežke návrhu dotazu kliknite pravým tlačidlom myši spojenie, ktoré chcete odstrániť, a potom kliknite na položku odstrániť.

na začiatok stránky

Poznámka : Vyhlásenie týkajúce sa strojového prekladu: Tento článok bol preložený počítačovým systémom bez zásahu človeka. Poskytovaním týchto strojových prekladov umožňuje spoločnosť Microsoft aj používateľom, ktorí nehovoria po anglicky, využívať obsah o produktoch, službách a technológiách spoločnosti Microsoft. Článok bol preložený strojovo, môže preto obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky.

Rozšírte svoje zručnosti
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pridajte sa k insiderom pre Office

Boli tieto informácie užitočné?

Ďakujeme za vaše pripomienky!

Ďakujeme vám za pripomienky. Pravdepodobne vám pomôže, ak vás spojíme s pracovníkom podpory pre Office.

×