Propojení tabulek a dotazů

Poznámka: Snažíme se pro vás co nejrychleji zajistit aktuální obsah nápovědy ve vašem jazyce. Tato stránka byla přeložena automaticky a může obsahovat gramatické chyby nebo nepřesnosti. Naším cílem je to, aby pro vás byl její obsah užitečný. Mohli byste nám prosím dát ve spodní části této stránky vědět, jestli vám informace v článku pomohly? Pokud byste se rádi podívali na jeho anglickou verzi, najdete ji tady.

Když do dotazu Accessu zahrnete víc zdrojů dat, pomocí spojení můžete omezit záznamy, které chcete vidět, podle toho, jak se zdroje dat vzájemně souvisejí. Spojení se používají ke kombinování záznamů z obou zdrojů dat, takže se každá dvojice záznamů ze zdrojů stane jedním záznamem ve výsledcích dotazu.

Tento článek popisuje různé typy spojení a ukazuje, jak je používat v dotazu. Ve výchozím nastavení je spojení vytvořeno automaticky, pokud už existuje vztah mezi dvěma zdroji dat, který používáte v dotazu. Pokud existují pole, která se přesně shodují na sobě, vytvoří se taky spojení. Můžete odstranit automaticky vytvořené spojení. Tento článek obsahuje základní informace o relacích mezi tabulkami a jejich vytvoření.

Poznámka: K dotazům se můžete připojit stejným způsobem, jakým spojujete tabulky, a taky se můžete spojit.

V tomto článku

Základní informace

Typy spojení

Zobrazení řádků se společnou hodnotou v obou spojených tabulkách

Zobrazení všech řádků z jedné tabulky a odpovídajících řádků z druhé tabulky

Zobrazení všech řádků z obou tabulek a jejich spojení, pokud existuje společná hodnota

Křížové spojení

Spojení tabulek na základě nerovnosti hodnot polí

Odstranění spojení

Základní informace

Databáze je kolekce tabulek dat, které navzájem nesou logické vztahy. Relace slouží k spojování tabulek podle polí, která mají společné. Tabulka může být součástí libovolného počtu vztahů, ale všechny relace vždy obsahují přesně dvě tabulky. V dotazu je relace zastoupena spojením.

Když do dotazu přidáte tabulky, Access vytvoří spojení založená na relacích, které byly definované mezi tabulkami. Spojení v dotazech můžete vytvořit ručně, i když nepředstavuje již definované relace. Pokud používáte jiné dotazy (místo nebo kromě tabulek) jako zdroje dat pro dotaz, můžete vytvořit spojení mezi zdrojovými dotazy a také mezi těmito dotazy a tabulkami, které používáte jako zdroje dat.

Spojení se chovají podobně jako kritéria dotazu v tom, že určují pravidla, která musí být zahrnuta do operací dotazu. Na rozdíl od kritérií se spoje také určují, že každá dvojice řádků, které splňují podmínky spojení, bude ve skupině záznamů kombinována a bude tvořit jeden řádek.

Existují čtyři základní typy spojení: vnitřní spojení, vnější spojení, křížové spojení a nerovné spojení. Tento článek popisuje každý typ spojení, který můžete použít, proč se používají jednotlivé typy a jak se vytvářejí spojení.

Spojení jsou dotazům, které relace jsou v tabulkách: označuje, jak se mohou data ze dvou zdrojů kombinovat na základě hodnot dat, které mají společné. Tady je obrázek spojení v návrhovém zobrazení dotazu s vlastnostmi spojení, které se otevřou v dialogovém okně:

Okno Vlastnosti spojení.

Tento řádek mezi tabulkami představuje spojení. Poklikáním na spojení otevřete dialogové okno Vlastnosti spojení (znázorňuje se) a zkontrolujte nebo změňte spojení.

Spojení někdy označuje směr. V této části dialogového okna se zobrazuje, která tabulka je ve spojení a která pole se používají k propojení tabulek.

Tato oblast určuje typ spojení: možnost 1 je vnitřní spojení, 2 je levé vnější spojení a 3 je pravé vnější spojení.

Pole z obou tabulek se dají použít a data, která se týkají daného úkolu, se zobrazí od každého. V případě vnitřního spojení nejsou zahrnuta žádná další data. V případě vnějšího spojení jsou do výsledků dotazu zahrnuty i nesouvisející záznamy z jedné tabulky.

Začátek stránky

Typy spojení

Existují čtyři základní typy spojení: vnitřní spojení, vnější spojení, křížové spojení a nerovné spojení. Mezi více spojeními a nerovnost spojení jsou k dispozici pokročilé typy připojení, které se používají zřídka, ale měli byste o nich vědět, abyste měli úplný přehled o tom, jak spojení funguje.

Vnitřní spojení: kombinování jenom souvisejících dat z obou tabulek

Vnitřní spojení je takové, ve kterém Access zahrnuje jenom data z tabulky, pokud v související tabulce existují odpovídající data a naopak. Ve většině času budete používat vnitřní spojení. Když vytvoříte spojení a neurčíte, jaký typ připojení je, Access předpokládá vnitřní spojení. Vnitřní spojení jsou užitečná, protože umožňují kombinovat data ze dvou zdrojů na základě sdílených hodnot – tak, aby se data zobrazila jenom v případě, že je k dispozici celý obrázek.

Vnější spojení: správné spojení všech souvisejících dat a všech zbývajících záznamů z jedné tabulky

Vnější spojení je jako vnitřní spojení, ale přidává zbývající řádky z jedné tabulky. Vnější spojení jsou směrová: levé vnější spojení zahrnuje všechny záznamy z levé tabulky – první tabulka ve spojení a pravé vnější spojení zahrnují všechny záznamy z pravé tabulky – druhá tabulka ve spojení.

Úplné vnější spojení: všechna data, kde je to proveditelné

V některých systémech může vnější spojení zahrnovat všechny řádky z obou tabulek, přičemž řádky spolu odpovídají. Tento postup se nazývá úplné vnější spojení a Access je výslovně nepodporuje. Pomocí křížového spojení a kritérií však můžete dosáhnout stejného efektu.

Křížové spojení: všechna data sloučená každý možný způsob

Ve většině časů se křížové spojení stane bočním efektem přidávání dvou tabulek do dotazu a pak nezapomenete k připojení. Access to znamená, že chcete zobrazit všechny záznamy z jedné tabulky společně s každým záznamem z druhé tabulky – každou možnou kombinací záznamů. Vzhledem k tomu, že žádná data nemůžou být kombinována, tento druh spojení se bude používat jen zřídka. V případě, že křížový spoj je jenom to, jak potřebujete, existuje několik případů.

Nerovná spojení: stejně jako běžné spojení, ale použití jiného porovnání pro kombinování řádků

Nerovná spojení: k porovnání hodnot použijte operátor jiný než rovnítko (=) a určete, jestli a jak se mají data sloučit. Nerovná spojení nejsou explicitně podporována, ale můžete použít křížové spojení a kritéria k dosažení stejného efektu.

Zobrazení řádků se společnou hodnotou v obou spojených tabulkách

Pokud chcete zobrazit jenom ty řádky, které mají ve spojených polích shodné hodnoty, použijte vnitřní spojení. Access automaticky vytvoří vnitřní spojení.

Jedná se o nejběžnější typ spojení. Sdělují dotaz, že řádky v jedné ze spojených tabulek odpovídají řádkům ve druhé tabulce na základě dat ve spojených polích. Při spuštění dotazu s vnitřním spojením se v operacích dotazu zahrne jenom ty řádky, ve kterých se v obou spojených tabulkách vyskytuje společná hodnota.

Jak se používá vnitřní spojení?

Ve většině času nemusíte nic dělat, abyste mohli použít vnitřní spojení. Pokud tabulky, které přidáte do dotazu, už mají relace, Access při přidávání tabulek automaticky vytvoří vnitřní spojení mezi každou dvojicí souvisejících tabulek. Pokud je zajištěna Referenční integrita, je nad čarou spojení u Relace 1:N zobrazena číslice 1 označující tabulku na straně 1 a symbol nekonečna () označující tabulku na straně N.

I když jste nevytvořili relace, Access automaticky vytvoří vnitřní spojení, když do dotazu přidáte dvě tabulky a tyto tabulky obsahují pole se stejným nebo kompatibilním datovým typem a jedno z polí JOIN je Primární klíč. V tomto případě se nezobrazuje symbol "1" a "n", protože neuplatňuje referenční integritu.

Pokud do dotazu přidáte dotazy a nevytvoříte mezi nimi relace, Access nevytvoří automaticky vnitřní spojení mezi dotazy ani mezi dotazy a tabulkami. Obecně byste je měli vytvořit sami. Vnitřní spojení vytvoříte přetažením pole z jednoho zdroje dat do pole na jiném zdroji dat. Mezi těmito dvěma poli se zobrazí čára, která označuje vytvořené spojení.

Syntaxe jazyka SQL pro vnitřní spojení

Vnitřní spojení jsou v JAZYKu SQL definovány klauzulí FROM, jak je ukázáno v následujícím příkladu:

FROM tabulka1 INNER JOIN tabulka2 ON tabulka1.pole1 Compare Tabulka2.pole2

Operace INNER JOIN se skládá z těchto částí:

Část

Popis

tabulka1, tabulka2

Názvy tabulek, ze kterých jsou slučovány záznamy

pole1, pole2

Názvy slučovaných polí. Nejedná-li se o číselná pole, musí mít obě pole stejný Datový typ a obsahovat stejný druh dat, názvy polí se však nemusejí shodovat.

porovnání

Libovolný relační porovnávací operátor: "=," "<," ">," "<=," ">=," nebo "<>."

Další informace o syntaxi vnitřního spojení najdete v tématu Operace INNER JOIN.

Začátek stránky

Zobrazení všech řádků z jedné tabulky a odpovídajících řádků z druhé tabulky

Vnější spojení udávají dotaz, že i když některé řádky na obou stranách spojení přesně odpovídají, musí dotaz zahrnovat všechny řádky z jedné tabulky a také ty řádky z druhé tabulky, které sdílejí společnou hodnotu na obou stranách spojení.

Vnější spojení mohou být zleva doprava nebo mohou být pravá vnější spojení. V levém vnějším spojení dotaz zahrnuje všechny řádky z první tabulky v klauzuli FROM příkazu SQL a pouze ty řádky z druhé tabulky, ve kterých spojené pole obsahuje hodnoty společné pro obě tabulky. V pravém vnějším spojení dotaz zahrnuje všechny řádky z druhé tabulky v klauzuli FROM příkazu SQL a pouze ty řádky z druhé tabulky, ve kterých spojené pole obsahuje hodnoty společné pro obě tabulky.

Poznámka: V dialogovém okně Vlastnosti spojení můžete snadno zjistit, která tabulka je levou tabulkou nebo na pravé tabulce v daném spojení. Můžete také přepnout do zobrazení SQL a pak zkontrolovat klauzuli FROM.

Vzhledem k tomu, že některé řádky na jedné straně vnějšího spojení neobsahují odpovídající řádky z druhé tabulky, budou některá pole vrácená ve výsledcích dotazu z jiné tabulky prázdná, pokud řádky neodpovídají.

Jak se používá vnější spojení?

Vnější spojení vytvoříte změnou existujícího vnitřního spojení. Pokud neexistuje žádné vnitřní spojení, vytvořte ho a potom ho změňte na vnější spojení.

Změna vnitřního spojení na vnější spojení

  1. V návrhovém zobrazení dotazu poklikejte na spojení, které chcete změnit.

    Zobrazí se dialogové okno Vlastnosti spojení.

  2. V dialogovém okně Vlastnosti spojení si všimněte možností uvedených vedle možnosti 2 a 3.

  3. Klikněte na požadovanou možnost a potom klikněte na OK.

  4. Access zobrazí spojení a zobrazí šipku, která ukazuje ze zdroje dat, do kterého budou zahrnuty všechny řádky, které budou obsahovat pouze řádky, které splňují podmínku pro spojení.

Dvojznačná vnější spojení

Pokud vytvoříte dotaz, který obsahuje levé spojení a vnitřní spojení, Access nemusí být schopen určit, kterou operaci připojení se má provést jako první. Protože se výsledky liší podle toho, jestli je první spojení nebo vnitřní spojení provedené, Access zobrazí chybovou zprávu:

Chcete-li opravit tuto chybu, musíte změnit dotaz tak, aby bylo jasné, které připojení se má provést jako první.

Syntaxe jazyka SQL pro vnější spojení

Vnější spojení jsou v JAZYKu SQL definovány klauzulí FROM, jak je ukázáno v následujícím příkladu:

FROM Tabulka1 [left | Right] Join Tabulka2
on Tabulka1. pole1 Compare

Operace LEFT JOIN a RIGHT JOIN mají následující části:

Část

Popis

tabulka1, tabulka2

Názvy tabulek, ze kterých jsou slučovány záznamy

pole1, pole2

Názvy slučovaných polí. Pole musí mít stejný Datový typ a obsahovat stejný druh dat, názvy polí se však nemusejí shodovat.

porovnání

Libovolný relační porovnávací operátor: "=," "<," ">," "<=," ">=," nebo "<>."

Další informace o syntaxi vnějšího spojení najdete v tématu levé spojení, operace RIGHT JOIN.

Začátek stránky

Zobrazení všech řádků z obou tabulek a jejich spojení, pokud existuje společná hodnota

Pokud chcete zobrazit všechny řádky ze dvou tabulek a spojit je na základě běžných hodnot, použijte úplné vnější spojení. Access explicitně nepodporuje úplné vnější spojení, ale stejný efekt můžete dosáhnout pomocí sjednocovacího dotazu. Následující postup vysvětluje, jak to udělat, ale pokud potřebujete další informace o sjednocovacích dotazech, podívejte se na článek Viz také .

Použití sjednocovacího dotazu k provedení úplného vnějšího spojení:

  1. Vytvořte dotaz s levým vnějším spojením pole, které chcete použít pro úplné vnější spojení.

  2. Na kartě Domů klikněte ve skupině Zobrazení na tlačítko Zobrazení a potom na položku Zobrazení SQL.

  3. Stisknutím kombinace kláves CTRL + C zkopírujte kód SQL.

  4. Odstraňte středník na konci klauzule FROM a pak stiskněte ENTER.

  5. Zadejte klauzuli UNION a stiskněte Enter.

    Poznámka: Při použití sjednocovacího dotazu k provedení úplného vnějšího spojení nepoužívejte klíčové slovo ALL.

  6. Stisknutím CTRL + V vložte kód SQL, který jste zkopírovali v kroku 3.

  7. V kódu, který jste vložili, změňte levé spojení na RIGHT JOIN.

  8. Odstraňte středník na konci druhé klauzule FROM a pak stiskněte ENTER.

  9. Přidejte klauzuli WHERE, která určuje, že hodnota pole JOIN je NULL v první tabulce uvedené v klauzuli FROM (Levá tabulka).

    Pokud je třeba klauzule FROM:

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

    Přidejte následující klauzuli WHERE:

    WHERE Products.ID IS NULL

  10. Zadejte středník (;) na konci klauzule WHERE můžete označit konec sjednocovacího dotazu.

  11. Na kartě Návrh klikněte ve skupině Výsledky na tlačítko Spustit.

Křížové spojení

Křížové spojení se liší od vnitřních a vnějších spojení v tom, že nejsou výslovně zastoupeny v Access. V křížovém spojení je každý řádek z jedné tabulky kombinován s každým řádkem z jiné tabulky, což má za následek, že se jedná o křížový produkt nebo kartézským součinem produkt. Při každém spuštění dotazu s tabulkami, které nejsou explicitně spojeny, je výsledkem křížový součin. Křížová spojení obvykle nejsou záměrná, ale existují případy, kdy mohou být užitečné.

Proč se používá křížový spoj?

Pokud chcete prozkoumat všechny možné kombinace řádků mezi dvěma tabulkami nebo dotazy, použijte křížový spoj. Předpokládejme například, že váš podnik má Spectacular rok a že chcete zákazníkům poskytnout rabaty. Můžete vytvořit dotaz, který sečte nákupy jednotlivých zákazníků, vytvoří malou tabulku, která má několik možných procent rabatu, a spojí druhou z jiného dotazu, který provede křížový spoj. Máte dotaz, který zobrazuje sadu hypotetických rabatů pro každého zákazníka.

Jak se používá křížový spoj?

Křížový spoj je vytvářen pokaždé, když do dotazu zahrnete tabulky nebo dotazy a nevytvoříte alespoň jedno explicitní spojení pro každou tabulku nebo dotaz. Access sloučí každý řádek z každé tabulky nebo dotazu, který není explicitně spojený s žádnou jinou tabulkou nebo dotazem, do každého druhého řádku ve výsledcích. Podívejte se na scénář rabatu z předchozího odstavce. Předpokládejme, že máte zákazníky 91 a chcete zjistit pět možných procent rabatu. Vaše křížové spojení produkuje 455 řádků (produkt 91 a 5).

Jak se můžete představit, neúmyslné křížové spojení může ve výsledcích dotazu vytvářet velký počet řádků. Kromě toho jsou tyto výsledky obvykle nevýznamné, protože pokud neplánujete sloučit všechny řádky s každým dalším řádkem, nebude většina kombinovaných řádků ve výsledcích vypadat jinak. Dotazy, které nepoužívají neúmyslné křížové spojení, můžou trvat velmi dlouho.

Nezáměrné křížové spojení v návrhovém zobrazení dotazu

1. pole s kroužkem by se měla vzájemně spojit.

Nezáměrný křížový součin

1. Povšimněte si velkého počtu záznamů.

Opravený výsledek dotazu

1. počet záznamů je moc malý.

Začátek stránky

Spojení tabulek na základě nerovnosti hodnot polí

Spojení nemusí být založena na ekvivalentních polích. Spojení může být založené na jakémkoli relačním operátoru, například větší než (>), menší než (<) nebo není rovno (<>). Spojení, která nejsou založena na ekvivalenci, se nazývají nerovná spojení.

Pokud chcete sloučit řádky dvou zdrojů dat na základě hodnot polí, které nejsou rovny, použijte nerovné spojení. Nerovná spojení se obvykle vycházejí buď z většího (>), menší než (<), větší než nebo rovno (> =), nebo je menší než nebo rovno (< =). Nerovná spojení založená na operátoru not equal (<>) může vracet téměř tolik řádků jako křížová spojení a výsledky můžou být obtížně interpretovány.

Jak se používá nerovné spojení?

Nerovná spojení nejsou v návrhovém zobrazení podporovaná. Pokud je chcete používat, musíte to provést pomocí zobrazení SQL. Můžete ale vytvořit spojení v návrhovém zobrazení, přepnout do zobrazení SQL, najít porovnávací operátor rovná se (=) a změnit ho na operátor, který chcete použít. Po provedení této akce můžete dotaz otevřít znovu v návrhovém zobrazení, jen když nejprve v zobrazení SQL změníte relační operátor zpět na rovná se (=).

Odstranění spojení

Pokud Access automaticky vytvoří spojení, které nechcete použít, nebo pokud vytvoříte spojení omylem – třeba spojení mezi dvěma poli s odlišnými datovými typy, můžete spojení odstranit.

  1. V návrhové mřížce dotazu klikněte na spojení, které chcete odebrat.

  2. Stiskněte klávesu Delete.

– nebo –

  • V návrhové mřížce dotazu klikněte pravým tlačítkem na spojení, které chcete odebrat, a potom klikněte na Odstranit.

Začátek stránky

Viz taky

Přidání záznamů do tabulky pomocí přidávacího dotazu

Sloučení výsledků několika výběrových dotazů pomocí sjednocovacího dotazu

Vytvoření dotazu založeného na několika tabulkách

Vytvoření, úprava nebo odstranění relace

Rozšiřte své dovednosti s Office
Projít školení
Získejte nové funkce jako první
Připojte se k účastníkům programu Office Insiders

Byly tyto informace užitečné?

Děkujeme vám za zpětnou vazbu.

Děkujeme vám za váš názor. Vypadá to, že bude užitečné, když vás spojíme s některým z našich agentů z podpory Office.

×