Applies ToAccess pre Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Ak do accessového dotazu zahrniete viacero zdrojov údajov, spojenia sa používajú na obmedzenie záznamov, ktoré chcete zobraziť, na základe toho, ako zdroje údajov navzájom súvisia. Spojenia sa používajú aj na kombinovanie záznamov z oboch zdrojov údajov, aby sa každá dvojica záznamov zo zdrojov stala jedným záznamom vo výsledkoch dotazu.

Tento článok popisuje rôzne typy spojení a ukazuje, ako ich používať v dotaze. Predvolene sa spojenie vytvorí automaticky, ak už existuje vzťah medzi dvoma zdrojmi údajov, ktoré používate v dotaze. Spojenie sa vytvorí aj vtedy, ak existujú polia, ktoré navzájom jasne korešpondujú. Automaticky vytvorené spojenie môžete odstrániť. Tento článok obsahuje základné informácie o vzťahoch tabuliek vrátane toho, ako ich vytvoriť.

Poznámka: Dotazy môžete spájať rovnakým spôsobom ako tabuľky a môžete tiež spojiť oba.

Obsah tohto článku

Prehľad

Databáza je kolekcia tabuliek s údajmi, ktoré navzájom nesú logické vzťahy. Vzťahy sa používajú na prepojenie tabuliek podľa polí, ktoré majú spoločné. Tabuľka môže byť súčasťou ľubovoľného počtu vzťahov, ale každý vzťah má vždy presne dve tabuľky. V dotaze je vzťah vyjadrený spojením.

Keď do dotazu pridáte tabuľky, Access vytvorí spojenia založené na vzťahoch definovaných medzi tabuľkami. Spojenia v dotazoch môžete vytvoriť manuálne aj vtedy, ak nepredstavujú vzťahy, ktoré už boli definované. Ak ako zdroje údajov pre dotaz používate iné dotazy (namiesto tabuliek alebo spolu s tabuľkami), môžete vytvoriť spojenia medzi zdrojovými dotazmi a tiež medzi týmito dotazmi a všetkými tabuľkami, ktoré používate ako zdroje údajov.

Spojenia sa správajú podobne ako kritériá dotazu v tom, že vytvárajú pravidlá, ktoré sa musia zhodovať s údajmi, aby sa zahrnuli do operácií dotazu. Na rozdiel od kritérií spojenia tiež určujú, že každý pár riadkov, ktoré spĺňajú podmienky spojenia, sa skombinuje v skupine záznamov a vytvorí sa jeden riadok.

Existujú štyri základné typy spojení: vnútorné spojenia, vonkajšie spojenia, krížové spojenia a nerovnaké spojenia. Tento článok sa zaoberá každým typom spojenia, ktoré môžete použiť, prečo používate jednotlivé typy a ako vytvoriť spojenia.

Spojenia sú dotazy, ktoré vzťahy sú s tabuľkami: údaj o tom, ako možno kombinovať údaje v dvoch zdrojoch na základe hodnôt údajov, ktoré majú spoločné. Tu je ilustrácia spojenia v návrhovom zobrazení dotazu s vlastnosťami spojenia otvorenými v dialógovom okne:

Okno Spojenie – vlastnosti.

Táto čiara medzi tabuľkami predstavuje spojenie. Dvojitým kliknutím na spojenie otvorte dialógové okno Vlastnosti spojenia (zobrazené) a skontrolujte alebo zmeňte spojenie.

Spojenia sú niekedy smerové. Táto oblasť dialógového okna zobrazuje, ktorá tabuľka je ktorá v spojení a ktoré polia sa používajú na spojenie tabuliek.

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

Možno použiť polia z oboch tabuliek a údaje týkajúce sa danej úlohy sa zobrazia z každej z nich. Vo vnútornom spojení nie sú zahrnuté žiadne ďalšie údaje. Vo vonkajšom spojení sú do výsledkov dotazu zahrnuté aj nesúvisiace záznamy z jednej tabuľky.

Na začiatok stránky

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 sú rozšírené typy spojenia a používajú sa zriedkavo, ale mali by ste vedieť, že majú plné znalosti o tom, ako spojenia fungujú.

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

Vnútorné spojenie je vnútorné spojenie, v ktorom Access zahrnuje údaje z tabuľky iba vtedy, ak sa v súvisiacej tabuľke nachádzajú zodpovedajúce údaje, a naopak. Väčšinou budete používať vnútorné spojenia. Keď vytvoríte spojenie a neurčujete, o aký typ spojenia ide, Access predpokladá, že chcete vnútorné spojenie. Vnútorné spojenia sú užitočné, pretože umožňujú kombinovať údaje z dvoch zdrojov na základe zdieľaných hodnôt, takže údaje sa zobrazia len vtedy, keď je k dispozícii úplný obrázok.

Vonkajšie spojenia: všetky súvisiace údaje sa správne skombinujú a všetky zostávajúce záznamy z jednej tabuľky

Vonkajšie spojenie je ako vnútorné spojenie, ale pridá zostávajúce riadky z jednej z tabuliek. Vonkajšie spojenia sú smerové: vonkajšie spojenie zľava zahŕňa všetky záznamy z ľavej tabuľky – prvú tabuľku v spojení – a vonkajšie spojenie sprava zahŕňa všetky záznamy z pravej tabuľky – druhú tabuľku v spojení.

Úplné vonkajšie spojenia: všetky údaje v kombinácii, ak je to možné

V niektorých systémoch môže vonkajšie spojenie zahŕňať všetky riadky z oboch tabuliek, pričom riadky sa skombinujú, keď zodpovedajú. Nazýva sa to úplné vonkajšie spojenie a Access ich výslovne 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

Krížové spojenie väčšinou predstavuje vedľajší efekt pridania dvoch tabuliek do dotazu a následného zabudnutia ich spojenia. Access interpretuje, že chcete zobraziť každý záznam z jednej tabuľky v kombinácii s každým záznamom z druhej tabuľky – každou možnou kombináciou záznamov. Keďže nie je možné kombinovať žiadne údaje, tento druh spojenia málokedy prináša užitočné výsledky. Existuje však niekoľko prípadov, kedy je krížové spojenie presne to, čo potrebujete.

Nerovnaké spojenia: ako bežné spojenie, ale s použitím iného porovnania na kombinovanie riadkov

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

Zobrazenie riadkov, v ktorých v oboch spojených tabuľkách existuje spoločná hodnota

Ak chcete zobraziť iba tie riadky, ktoré majú zodpovedajúce hodnoty v spojenom poli, použite vnútorné spojenie. Access automaticky vytvorí vnútorné spojenia.

Vnútorné spojenia sú najčastejším typom spojenia. Dotazu oznámia, že riadky z jednej zo spojených tabuliek zodpovedajú riadkom v druhej tabuľke na základe údajov v spojených poliach. Pri spustení dotazu s vnútorným spojením sa do operácií dotazu zahrnú iba tie riadky, v ktorých existuje spoločná hodnota v oboch spojených tabuľkách.

Ako použijem vnútorné spojenie?

Väčšinou nemusíte robiť nič, aby ste mohli používať vnútorné spojenie. Ak tabuľky, ktoré pridáte do dotazu, už majú vzťahy, Access po pridaní tabuliek automaticky vytvorí vnútorné spojenie medzi každou dvojicou súvisiacich tabuliek. Ak je zabezpečená referenčná integrita, 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 v prípade, že ste vzťahy nevytvorili, Access automaticky vytvorí vnútorné spojenia, ak do dotazu pridáte dve tabuľky a každá z týchto tabuliek obsahuje pole s rovnakým alebo kompatibilným typom údajov a jedno z polí spojenia je primárny kľúč. Symboly "one" a "many" sa v tomto prípade nezobrazujú, pretože referenčná integrita nie je vynútená.

Ak do dotazu pridáte dotazy a nevytvoríte vzťahy medzi týmito dotazmi, Access nevytvorí automaticky vnútorné spojenia medzi týmito dotazmi alebo medzi dotazmi a tabuľkami. Vo všeobecnosti by ste si ich mali vytvoriť sami. Vnútorné spojenie vytvoríte presunutím poľa z jedného zdroja údajov do poľa v inom zdroji údajov. Access zobrazí čiaru medzi týmito dvomi poliami, čo znamená, že spojenie sa vytvorilo.

Syntax SQL pre vnútorné spojenie

Vnútorné spojenia sú zadané v jazyku SQL v klauzule FROM, ako je to znázornené nižšie:

FROM tabuľka1 INNER JOIN tabuľka2 ON tabuľka1.pole1 porovnať tabuľku2.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.

compare

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

Ďalšie informácie o syntaxi vnútorného spojenia nájdete v téme Operácia INNER JOIN.

Na začiatok stránky

Zobrazenie všetkých riadkov z jednej tabuľky a zodpovedajúcich riadkov z druhej tabuľky

Vonkajšie spojenia hovoria dotazu, že hoci niektoré riadky na oboch stranách spojenia presne zodpovedajú, dotaz by mal obsahovať všetky riadky z jednej tabuľky a tiež tie riadky z druhej tabuľky, ktoré majú spoločnú hodnotu na oboch stranách spojenia.

Vonkajšie spojenia môžu byť vonkajšie ľavé alebo pravé vonkajšie spojenia. V ľavom vonkajšom spojení dotaz zahrnie do klauzuly SQL príkaz FROM všetky riadky z prvej tabuľky a iba tie riadky z druhej tabuľky, v ktorých spájané pole obsahuje hodnoty spoločné pre obe tabuľky. V pravom vonkajšom spojení dotaz zahrnie do klauzuly SQL príkaz FROM všetky riadky z druhej tabuľky a iba tie riadky z druhej tabuľky, v ktorých spájané pole obsahuje hodnoty spoločné pre obe tabuľky.

Poznámka: Dvojitým kliknutím na spojenie a zobrazením v dialógovom okne Vlastnosti spojenia môžete jednoducho zistiť, ktorá tabuľka je ľavou alebo pravou tabuľkou v danom spojení. Môžete tiež prepnúť na zobrazenie SQL a potom preskúmať klauzulu FROM.

Keďže niektoré riadky na jednej strane vonkajšieho spojenia nebudú mať zodpovedajúce riadky z druhej tabuľky, niektoré polia vrátené vo výsledkoch dotazu z tejto inej tabuľky budú prázdne, ak riadky nezodpovedajú.

Ako použijem vonkajšie spojenie?

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 spojenie, ktoré chcete zmeniť.

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

  2. V dialógovom okne Spojenie – vlastnosti si všimnite možnosti uvedené vedľa možnosti 2 a možnosti 3.

  3. Kliknite na požadovanú možnosť a potom kliknite na tlačidlo OK.

  4. Access zobrazí spojenie a zobrazí šípku, ktorá ukazuje zo zdroja údajov, kde budú všetky riadky zahrnuté do zdroja údajov, kde budú zahrnuté iba tie riadky, ktoré spĺňajú podmienku spojenia.

Nejednoznačné vonkajšie spojenia

Ak vytvoríte dotaz, ktorý obsahuje funkcie LEFT JOIN a INNER JOIN, Access nemusí vedieť určiť, ktorá operácia spojenia sa má vykonať ako prvá. Keďže výsledky sa líšia v závislosti od toho, či sa ľavé alebo vnútorné spojenie vykoná ako prvé, Access zobrazí chybové hlásenie:

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

Syntax SQL pre vonkajšie spojenie

Vonkajšie spojenia sú zadané v sql v klauzule FROM, ako je to znázornené nižšie:

TABUĽKA FROM1 [ LEFT | RIGHT ] JOIN table2ON table1.field1 compare table2.field2

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.

compare

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

Ďalšie informácie o syntaxi vonkajšieho spojenia nájdete v téme LEFT JOIN, RIGHT JOIN Operations.

Na začiatok stránky

Zobraziť všetky riadky z oboch tabuliek a spojiť ich tam, kde 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žijete úplné vonkajšie spojenie. Access explicitne nepodporuje úplné vonkajšie spojenia, ale rovnaký efekt môžete dosiahnuť použitím zjednocovacieho dotazu. Postup je popísaný v nasledujúcom postupe. Ak však chcete získať ďalšie informácie o zjednocovacích dotazoch, pozrite si časť Pozrite tiež .

Použitie zjednocovacieho dotazu na vykonanie úplného vonkajšieho spojenia:

  1. Vytvorte dotaz s ľavým vonkajším spojením v poli, ktoré chcete použiť na úplné vonkajšie spojenie.

  2. Na karte Domov kliknite v skupine Zobrazenia na položku Zobrazenie a potom kliknite na položku Zobrazenie SQL.

  3. Stlačením kombinácie klávesov CTRL + C skopírujte kód SQL.

  4. Odstráňte bodkočiarku na konci klauzuly FROM a potom stlačte kláves ENTER.

  5. Zadajte výraz UNION a potom stlačte kláves ENTER.

    Poznámka: Nepoužívajte kľúčové slovo ALL pri použití zjednocovacieho dotazu na vykonanie úplného vonkajšieho spojenia.

  6. Stlačením kombinácie klávesov CTRL + V prilepte kód SQL, ktorý ste skopírovali v kroku 3.

  7. V prilepenom kóde zmeňte položku LEFT JOIN na RIGHT JOIN.

  8. Odstráňte bodkočiarku na konci druhej klauzuly FROM a potom stlačte kláves ENTER.

  9. Pridajte klauzulu WHERE, ktorá určuje, že hodnota poľa spojenia je NULL v prvej tabuľke uvedenej v klauzule FROM (ľavá tabuľka).

    Ak je napríklad klauzula FROM:

    FROM Products RIGHT JOIN [Order Details]  ON Products.ID = [Order Details].[Product ID]

    Pridali by ste nasledujúcu klauzulu WHERE:

    WHERE Products.ID IS NULL

  10. Zadajte bodkočiarku (;) na konci klauzuly WHERE na označenie konca zjednocovacieho dotazu.

  11. Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.

Krížové spojenia

Krížové spojenia sa líšia od vnútorných a vonkajších spojení v tom, že nie sú výslovne vyjadrené v Access. V krížovom spojení sa každý riadok z jednej tabuľky skombinuje s každým riadkom z inej tabuľky, čo vedie k tomu, čo sa nazýva krížový produkt alebo kartézsky produkt. Pri každom spustení dotazu s tabuľkami, ktoré nie sú explicitne spojené, výsledkom je krížový produkt. Krížové spojenia sú zvyčajne neúmyselné, ale v určitých prípadoch môžu byť užitočné.

Prečo sa používa krížové spojenie?

Ak chcete preskúmať všetky možné kombinácie riadkov medzi dvoma tabuľkami alebo dotazmi, použite krížové spojenie. Predpokladajme napríklad, že váš podnik má za sebou veľkolepý rok a uvažujete o poskytnutí zliav zákazníkom. Môžete vytvoriť dotaz, ktorý sčíta nákupy každého zákazníka, vytvorí malú tabuľku s niekoľkými možnými percentuálnymi zľavami a skombinuje tieto dve položky v inom dotaze, ktorý vykoná krížové spojenie. Skončíte s dotazom, ktorý zobrazuje množinu hypotetických zliav pre každého zákazníka.

Ako použijem krížové spojenie?

Krížové spojenie sa vytvorí vždy, keď do dotazu zahrniete tabuľky alebo dotazy a nevytvoríte aspoň jedno explicitné spojenie pre každú tabuľku alebo dotaz. Access skombinuje každý riadok z každej tabuľky alebo dotazu, ktorý nie je explicitne spojený so žiadnou inou tabuľkou alebo dotazom do každého druhého riadka vo výsledkoch. Zvážte scenár zľavy z predchádzajúceho odseku. Predpokladajme, že máte 91 zákazníkov a chcete si pozrieť päť možných percentuálnych zliav. Krížové spojenie vytvorí 455 riadkov (súčin 91 a 5).

Ako si možno viete predstaviť, neúmyselné krížové spojenia môžu vo výsledkoch dotazu vytvoriť obrovské množstvo riadkov. Okrem toho sú tieto výsledky vo všeobecnosti nezmyselné, pretože ak v skutočnosti nemáte v úmysle skombinovať každý riadok s každým ďalším riadkom, väčšina kombinovaných riadkov, ktoré sa zobrazujú vo výsledkoch, nebude mať zmysel. Nakoniec dotazy, ktoré používajú neúmyselné krížové spojenia, môžu trvať veľmi dlho.

Neúmyselné krížové spojenie v dotaze v návrhovom zobrazení

1. Zakrúžkované polia by mali byť navzájom spojené.

Neúmyselný krížový produkt

1. Všimnite si veľmi veľký počet záznamov.

Výsledok správneho dotazu

1. Všimnite si, že počet záznamov je oveľa menší.

Na začiatok stránky

Spojenie tabuliek na základe nerovnosti hodnôt polí

Spojenia nemusia byť založené na rovnocennosti spojených polí. Spojenie môže byť založené na každom operátore porovnávania, ako je napríklad väčšie ako (>), menšie ako (<) alebo sa nerovná (<>). Spojenia, ktoré nie sú založené na ekvivalencii, sa nazývajú nerovnaké spojenia.

Ak chcete skombinovať riadky dvoch zdrojov údajov na základe hodnôt polí, ktoré nie sú rovnaké, použite nerovné spojenie. Nerovnaké spojenia sú zvyčajne založené buď na väčších ako (>), menších ako (<), väčších alebo rovných (>=), alebo menších alebo rovných (<=). Nerovnaké spojenia založené na operátore nerovná sa (<>) môžu vrátiť takmer toľko riadkov ako krížové spojenia a výsledky sa môžu ťažko interpretovať.

Ako sa používa nerovnaké spojenie?

Nerovnaké spojenia nie sú v návrhovom zobrazení podporované. Ak ich chcete používať, musíte to urobiť pomocou zobrazenia SQL. Môžete však vytvoriť spojenie v návrhovom zobrazení, prepnúť na zobrazenie SQL, nájsť operátor porovnania rovná sa (=) a zmeniť ho na operátor, ktorý chcete použiť. Po vykonaní tohto postupu môžete dotaz znova otvoriť iba v návrhovom zobrazení, ak najprv zmeníte operátor porovnania späť na rovná sa (=) v zobrazení SQL.

Odstránenie spojenia

Ak Access automaticky vytvorí spojenie, ktoré nechcete, alebo ak vytvoríte spojenie omylom , napríklad spojenie medzi dvomi poľami, ktoré majú odlišné typy údajov, môžete toto spojenie odstrániť.

  1. V mriežke návrhu dotazu kliknite na spojenie, ktoré chcete odstrániť.

  2. Stlačte kláves DELETE.

- alebo -

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

Na začiatok stránky

Pridanie záznamov do tabuľky pomocou pripájacieho dotazu

Kombinovanie výsledkov viacerých výberových dotazov pomocou zjednocovacieho dotazu

Vytvorenie dotazu založeného na viacerých tabuľkách

Vytvorenie, úprava alebo odstránenie vzťahu

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.