Spojenie tabuliek a dotazov

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.

Ak zahrniete viacerých zdrojov údajov v dotaze Accessu, používate Obmedzte počet záznamov, ktoré chcete zobraziť, na základe ako zdroje údajov sú spojené navzájom spojení. Použiť spojenia na skombinovanie záznamov z oboch zdrojov údajov tak, aby jednotlivé páry záznamov zo zdrojov záznamov vo výsledkoch dotazu.

Tento článok popisuje rôzne typy spojení a vám ukáže, ako sa používajú v dotaze. Na základe predvoleného nastavenia spojenia sa automaticky vytvorí, ak už existuje vzťah medzi dve údaje zdrojov, ktoré používate v dotaze. Spojenia sa vytvorí aj ak existujú polia, ktoré jednoznačne zodpovedajú vzájomných interakcií. Automaticky vytvorené pripojenie môžete odstrániť. Tento článok poskytuje základné informácie o vzťahoch tabuliek, vrátane ako ho vytvoriť.

Poznámka : Rovnako ako spájania tabuliek a môžete pripojiť aj môžete spojiť dotazy.

Obsah tohto článku

Prehľad

Zobrazenie riadkov v oboch Spojených tabuľkách existuje spoločná hodnota

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

Zobrazenie všetkých riadkov z oboch tabuliek a ich pripojenie, ak existuje spoločná hodnota

Krížové spojenia

Pripojenie k tabuľky na základe nerovnosti hodnôt polí

Odstránenie spojenia

Prehľad

Databázy je kolekcia tabuliek údajov, ktoré nesiete logické vzťahy k sebe. Na pripojenie tabuľky podľa polia, ktoré majú spoločné použiť vzťahy. Tabuľka môže byť súčasťou ľubovoľný počet vzťahov, ale každý vzťah má vždy presne dve tabuľky. V dotaze, je vyjadrená vzťahu spojenia.

Po pridaní tabuliek do dotazu, Access vytvorí spojenia, ktoré sú založené na vzťahy, ktoré boli definované medzi tabuľkami. Manuálne môžete vytvoriť spojenia v dotazoch, aj keď nie sú vzťahy, ktoré už boli definované. Ak chcete použiť iné dotazy (namiesto alebo spoločne tabuliek) ako zdroje údajov dotazu, môžete vytvoriť spojenia medzi zdrojmi dotazov, ako aj medzi danými dotazmi alebo všetky tabuľky, ktoré používate ako zdroj údajov.

Spojenia sa správajú podobne ako kritériá dotazu v tom, že zavádzajú pravidlá, ktoré údaje musia splniť, ak majú byť zahrnuté do operácií dotazu. Na rozdiel od kritérií však spojenia určujú, že každá dvojica riadkov spĺňajúca podmienky spojenia sa v množine záznamov spojí a sformuje len jeden riadok.

Existujú štyri základné typy spojení: vnútorné spojenia, vonkajšie spojenia, krížové spojenia a nerovnaké spojenia. Tento článok popisuje každý typ, ktorý je možné použiť, dôvody použitia každého typu, ako aj vytvorenie spojení.

Na začiatok stránky

Zobrazenie riadkov 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 iných tabuliek, a to na základe údajov 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 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é obsahujú pole s rovnakým alebo kompatibilným typom údajov, pričom jedno zo spojených polí je primárny kľúč. 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. Vnútorné spojenie vytvoríte tak, že pole zo zdroja údajov presuniete do poľa v inom zdroji údajov. Program Access zobrazí čiaru medzi dvoma poľami na zobrazenie vytvoreného spojenia.

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 JOIN tabuľka2 ON Tabuľka1. pole1 porovnanie 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 údajov a obsahovať rovnaký druh údajov, ale nemusia mať rovnaký názov.

porovnanie

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

Ďalšie informácie o syntaxe 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 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.

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 : Či je tabuľka v danom spojení ľavá alebo pravá zistíte dvojitým kliknutím na spojenie a následným pohľadom do dialógového okna Vlastnosti spojenia. Môžete tiež prepnúť na zobrazenie SQL a skontrolovať klauzulu FROM.

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 Vlastnosti spojenia.

  2. V dialógovom okne Vlastnosti spojenia si všimnite možnosti zobrazené vedľa možnosti 2 a možnosti 3.

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

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

Nejednoznačné vonkajšie spojenia

Ak vytvoríte dotaz, ktorý obsahuje doľava spojenia a vnútorné spojenie, Access nemusí určiť, ktoré operácia má vykonať ako prvé. Keďže výsledky sa líšia v závislosti od toho, či spojenie zľava alebo vnútorné spojenie sa vykonáva najprv, program 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ú v SQL určené v klauzule FROM, ako je zobrazené nižšie:

FROM Tabuľka1 [doľava | PRAVÝ] spojenie tabuľka2
na table1.field1 porovnanie 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.

porovnanie

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

Ďalšie informácie o syntaxe vonkajšieho spojenia nájdete v téme doľava JOIN, RIGHT JOIN operácie.

Na začiatok stránky

Zobrazenie všetkých riadkov z oboch tabuliek a ich pripojenie, ak existuje spoločná hodnota

Ak chcete zobraziť všetky riadky z dvoch tabuliek a pripojiť sa k nim na základe bežných hodnôt, používate úplné vonkajšie spojenie. Program Access explicitne nepodporuje úplného vonkajšieho spojenia, ale môžete dosiahnuť rovnakého efektu s použitím zjednocovacieho dotazu. Nasledujúci postup vysvetľuje, ako to urobiť, ale ak chcete ďalšie informácie o zjednocovacích dotazoch nájdete v časti Pozrite tiež.

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

  1. Vytvorte dotaz, ktorý má ľavé vonkajšie spojenie pre pole, ktoré chcete použiť pre ú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 klávesov CTRL+C skopírujte kód SQL.

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

  5. Zadajte klauzulu UNIONa potom stlačte kláves ENTER.

    Poznámka : Keď používate zjednocovací dotaz na vykonanie úplného vonkajšieho spojenia, nepožívajte kľúčové slovo ALL.

  6. Stlačením klávesu CTRL+V prilepte kód SQL skopírovaný v kroku 3.

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

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

  9. Pridajte klauzulu WHERE, ktorá určuje, že hodnota poľa spojenia je NULL v prvej tabuľke uvádzanej 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. Zadaním bodkočiarky (;) na konci klauzuly WHERE označte koniec zjednocovacieho dotazu.

  11. Na karte Návrh kliknite v skupineVýsledky na položku Spustiť.

Krížové spojenia

Krížové spojenia sa líšia od vnútorné a vonkajšie spojenia v, ak nie sú explicitne reprezentované v Access. Krížové spojenie, každý riadok z jednej tabuľky je v kombinácii s každým riadkom z inej tabuľky, výsledkom je to, čo sa nazýva krížový produkt alebo karteziánsky súčin. Každom spustení dotazu, ktorý obsahuje tabuľky, ktoré nie sú explicitne spojené, výsledkom je krížový produkt. Krížové spojenia sú zvyčajne neúmyselné, ale existujú prípady, pričom môže byť užitočné.

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 tabuľkami alebo dotazmi. Napríklad, váš podnik za sebou veľkolepý 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 možnými percentami zliav a spojí ich do ďalšieho dotazu, ktorý vykoná krížové spojenie. Výsledkom bude dotaz zobrazujúci množinu hypotetických zliav pre jednotlivých zákazníkov.

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

Krížové spojenie sa vytvorí, keď do dotazu vložíte tabuľky alebo dotazy a nevytvoríte aspoň jedno explicitné spojenie pre každú tabuľku alebo dotaz. Program Access spojí každý riadok z každej tabuľky alebo dotazu, ktorý nie je explicitne spojený, s ľubovoľnou tabuľkou alebo dotazom do každého druhého riadku vo výsledku. 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 (výsledok 91 a 5).

Ako vidíte, neúmyselné krížové spojenia vytvoria vo výsledku dotazu veľké množstvo riadkov. Okrem toho sú vo všeobecnosti tieto výsledky nezmyselné, pretože ak chcete spojiť každý riadok s každým druhým riadkom, väčšina spojených riadkov zobrazených vo výsledku nedáva zmysel. Spustenie dotazov používajúcich neúmyselné krížové spojenia môže v konečnom dôsledku trvať veľmi dlho.

Unintentianl krížové spojenia v návrhovom zobrazení dotazu
Neúmyselné Krížové spojenie v návrhovom zobrazení dotazu.

1. Zakrúžkované polia by sa mali spolu spojiť.

Neúmyselný krížový produkt
Krížový produkt vrátený neúmyselné Krížové spojenie je znázornené vyššie.

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

Výsledok dotazu opraviť
Výsledky po vytvorení správneho spojenia.

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

Na začiatok stránky

Pripojenie k tabuľky 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?

Nerovnaké spojenia nie sú podporované v návrhovom zobrazení. Ak ich chcete použiť, musíte použiť zobrazenie SQL. Ak vytvoríte spojenie v návrhovom zobrazení, prepnite na zobrazenie SQL, nájdite operátor porovnávania rovná sa (=) a zmeňte ho na požadovaný operátor. Potom môžete otvoriť dotaz v návrhovom zobrazení, len ak v zobrazení SQL zmeníte operátora porovnávania späť na operátor rovná sa (=).

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

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.

Pozrite tiež

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

Kombinovať výsledkov viacerých vyberte dotazov použitím zjednocovacieho dotazu

Vytvorenie dotazu na základe viacerých tabuliek

Vytvorenie, úprava alebo odstránenie vzťahu

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.

×