Spojení tabulek a dotazů

Důležité :  Tento článek je strojově přeložený – přečtěte si toto upozornění. Anglickou verzi tohoto článku pro referenci najdete tady.

Pokud do dotazu zahrnete více zdrojů dat, můžete pomocí spojení omezit záznamy, které chcete zobrazit, na základě vzájemných vztahů mezi zdroji dat. Pomocí spojení také můžete zkombinovat záznamy z obou zdrojů dat, takže se jednotlivé dvojice záznamů z těchto zdrojů stanou ve výsledcích dotazu jedním záznamem.

Tento článek popisuje různé typy spojení a ukazuje, jak je lze používat v dotazu. Ve výchozím nastavení se spojení automaticky vytvoří Pokud je už relace mezi dva zdroje dat, které používáte v dotazu. Spojení je vytvořen také pokud existují pole, která jasně odpovídají sobě. Automaticky vytvořené spojení můžete odstranit. Tento článek obsahuje základní informace o relací mezi tabulkami, včetně jak ho vytvořit.

Poznámka : Připojení dotazů v stejným způsobem jako připojení tabulkách a taky můžete připojit obojí.

V tomto článku

Základní informace

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ím, pokud existuje společná hodnota

Křížová spojení

Připojit se ke tabulky založené na nerovnosti hodnot polí

Odstranění spojení

Přehled

Databázi je kolekce tabulek s daty, která nesete logické vztahy mezi sebou. Připojení tabulkách tak, že pole, která mají společné pomocí relace. Tabulka může být součástí libovolný počet relace, ale konkrétních vztahů vždy obsahovat přesně dvě tabulky. V dotazu relace představované spojení.

Při přidání tabulek do dotazu vytvoří aplikace Microsoft Office Access 2007 spojení založená na relacích definovaných mezi jednotlivými tabulkami. Spojení lze v dotazech vytvářet ručně, bez ohledu na to, zda reprezentují již definované relace. Použijete-li pro dotaz jako zdroj dat jiné dotazy (místo tabulek nebo jako jejich doplněk), můžete vytvářet spojení mezi zdrojovými dotazy a také mezi těmito dotazy a tabulkami použitými jako zdroj dat.

Spojení se podobají kritériím dotazu v tom, že vytváří pravidla, která musí být splněna, aby byla data zahrnuta do operací dotazu. Na rozdíl od kritérií spojení také určují, že každá dvojice řádků vyhovující podmínce spojení bude v sadě záznamů sloučena do jednoho řádku.

Existují čtyři základní typy spojení: vnitřní spojení, vnější spojení, křížové spojení a nerovné spojení. Tento článek popisuje jednotlivé typy spojení, které lze použít, důvody pro jejich použití a postupy při jejich vytváření.

Začátek stránky

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

Pokud chcete zobrazit pouze ty řádky, které mají ve spojeném poli odpovídající hodnoty, můžete použít vnitřní spojení. Aplikace Access vytváří vnitřní spojení automaticky.

Nejčastějším typem spojení je vnitřní spojení. Toto spojení poskytne na základě dat ve spojených polích dotazu informaci, že řádky v jedné ze spojených tabulek odpovídají řádkům v jiné tabulce. Při spuštění dotazu s vnitřním spojením budou do operací dotazu zahrnuty pouze řádky se společnou hodnotou v obou spojených tabulkách.

Postup při použití vnitřního spojení

Použití vnitřního spojení většinou nevyžaduje žádnou akci. Pokud již tabulky, které přidáváte do dotazu, mají relace, aplikace Access při přidávání tabulek automaticky mezi každou dvojicí tabulek propojených relací vytvoří vnitřní spojení. 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 v případě, že jste žádnou relaci nevytvořili, a přidáte do dotazu dvě tabulky obsahující pole se stejným nebo kompatibilním datovým typem a jedno ze spojených polí je Primární klíč, jsou automaticky vytvořena vnitřní spojení. V tomto případě nejsou zobrazeny symboly pro stranu 1 a N, protože není zajištěna referenční integrita.

Přidáte-li do dotazu další dotazy a nevytvoříte mezi nimi relace, nejsou mezi nimi nebo mezi dotazy a tabulkami automaticky vytvořena spojení. Tato spojení obvykle musíte vytvořit sami. Vnitřní spojení vytvoříte přetažením pole z jednoho zdroje dat do pole v jiném zdroji dat. Vytvoření spojení je znázorněno čarou mezi oběma poli.

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. field1compare tabulka2. pole2

Operace INNER JOIN má následující části:

Část

Popis

tabulka1, tabulka2

Názvy tabulek, ze kterých jsou kombinovány záznamy.

pole1, pole2

Názvy polí, která jsou spojována. 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í operátor porovnání: =, <, >, <=, >= nebo <>.

Další informace o syntaxi vnitřního spojení naleznete 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í poskytne dotazu informaci, že některé řádky na obou stranách spojení sice přesně odpovídají, ale dotaz by měl zahrnovat všechny řádky z jedné tabulky a také řádky z druhé tabulky, které sdílejí společnou hodnotu na obou stranách spojení.

Vnější spojení jsou mohou být levá nebo pravá. Při levém vnějším spojení bude dotaz zahrnovat všechny řádky z tabulky, která je první tabulkou v klauzuli FROM příkazu SQL, a z druhé tabulky pouze řádky, ve kterých spojené pole obsahuje hodnoty shodné v obou tabulkách. Při pravém vnějším spojení bude dotaz zahrnovat všechny řádky z tabulky, která je druhou tabulkou v klauzuli FROM příkazu SQL, a z první tabulky pouze řádky, ve kterých spojené pole obsahuje hodnoty shodné v obou tabulkách.

Poznámka : Chcete-li zjistit, která tabulka je v daném spojení levou tabulkou a která pravou tabulkou, poklepejte na spojení – zobrazí se dialogové okno Vlastnosti spojení obsahující hledané informace. Můžete také přepnout do zobrazení SQL a prohlédnout si klauzuli FROM.

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

Postup při použití vnějšího spojení

Vnější spojení vytvoříte úpravou stávajícího vnitřního spojení. Pokud neexistuje žádné vnitřní spojení, vytvoříte jej a změníte jej na vnější spojení.

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

  1. V návrhovém zobrazení dotazu poklepejte 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 položek 2 a 3.

  3. Klepněte na požadovanou možnost a potom klepněte na tlačítko OK.

  4. Zobrazí se spojení se šipkou směřující od zdroje dat, který zahrnuje všechny řádky, ke zdroji, který zahrnuje pouze řádky vyhovující podmínce spojení.

Dvojznačná vnější spojení

Pokud jste creaate dotaz, který obsahuje LEFT JOIN a VNITŘNÍHO SPOJENÍ, Access nejspíš nebudou moct zjistit, které spojení se operace má provést jako první. Protože výsledky se liší podle toho, zda levé spojení nebo vnitřní spojení je provedena první, zobrazí se chybová zpráva:

Tuto chybu napravíte musí změnit dotazu tak, aby bylo jasné, které spojení se má perfom nejdřív.

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 [VLEVO | RIGHT] JOIN tabulka2
NA table1.field1compare Tabulka2.pole2

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

Část

Popis

tabulka1, tabulka2

Názvy tabulek, ze kterých jsou kombinovány záznamy.

pole1, pole2

Názvy polí, která jsou spojována. 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í operátor porovnání: =, <, >, <=, >= nebo <>.

Další informace o syntaxi vnějšího spojení naleznete v tématu LEFT JOIN, operací SPOJENÍ DOPRAVA.

Začátek stránky

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

Když budete chtít zobrazení všech řádků z obou tabulek a jejich běžné hodnotami spojením, použijte úplného vnějšího spojení. Aplikace Access podporuje explicitně úplného vnějšího spojení, ale stejného účinku dosáhnete pomocí sjednocovacího dotazu. Následující postup vysvětluje, jak to udělat, ale pokud chcete získat další informace o sjednocovacích dotazech najdete v části Viz také.

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

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

  2. Na kartě Domů klikněte ve skupině Zobrazení na položku 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 stiskněte klávesu ENTER.

  5. Zadejte UNIONa stiskněte klávesu 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 kombinace kláves CTRL+V vložte kód SQL, který jste zkopírovali v kroku 3.

  7. Ve vloženém kódu změňte klíčová slova LEFT JOIN na RIGHT JOIN.

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

  9. Přidejte klauzuli WHERE, která určí, že hodnota pole spojení v první tabulce obsažené v klauzuli FROM (levá tabulka) je NULL.

    Pokud bude například klauzule FROM vypadat takto:

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

    Přidáte následující klauzuli WHERE:

WHERE Products.ID IS NULL

  1. Zadáním středníku (;) na konec klauzule WHERE označte konec sjednocovacího dotazu.

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

Křížové spojení

Křížové spojení není na rozdíl od vnitřních a vnějších spojení v aplikaci Office Access 2007 explicitně znázorněno. V křížovém spojení jsou jednotlivé řádky z jedné tabulky kombinovány s řádky z druhé tabulky a výsledkem je takzvaný křížový (kartézský) součin. 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 v některých případech mohou být užitečná.

Důvody použití křížového spojení

Křížové spojení použijte, pokud chcete zjistit všechny možné kombinace řádků mezi dvěma tabulkami nebo dotazy.Předpokládejme například, že se vašemu podniku daří a zvažujete možnost poskytnout zákazníkům slevu. Můžete vytvořit dotaz, který sečte nákupy jednotlivých zákazníků, vytvoří malou tabulku s několika různými variantami procentuální slevy a kombinací dotazu s tabulkou vytvoří dotaz, který provede křížové spojení. Výsledkem je dotaz, který zobrazí sadu hypotetických slev pro jednotlivé zákazníky.

Postup při použití křížového spojení

Křížové spojení je vytvořeno pokaždé, když jsou do dotazu zahrnuty tabulky nebo dotazy a pro jednotlivé tabulky není vytvořeno ani jedno explicitní spojení. Aplikace Access zkombinuje jednotlivé řádky z každé tabulky nebo dotazu bez explicitního spojeny s jinou tabulkou nebo dotazem se všemi ostatními řádky ve výsledcích. Předpokládejme, že scénář se slevami z předchozího odstavce zahrnuje 91 zákazníků a chcete zobrazit pět možných variant procentuální slevy. Výsledkem křížového spojení bude 455 řádků (součin 91 a 5).

Výsledky dotazu mohou při použití nezáměrného křížového spojení obsahovat velmi velký počet řádků. Tyto výsledky navíc obvykle nemají žádnou informační hodnotu, protože pokud nemáte v úmyslu zkombinovat každý řádek s ostatními řádky, nemá většina zkombinovaných řádků ve výsledcích žádný význam. V neposlední řadě může být zpracování dotazu s nezáměrnými křížovými spojení časově velmi náročné.

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

1. Zakroužkovaná pole musí být vzájemně spojena.

Nezáměrný křížový součin
Křížový součin vrácený Nezáměrný křížového spojení je vidět nad.

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

Opravený výsledek dotazu
Výsledek po vytvoření správného spojení.

1. Všimněte si mnohem menšího počtu záznamů.

Začátek stránky

Připojit se ke tabulky založené na nerovnosti hodnot polí

Spojení nemusí být založeno na rovnocennosti spojených polí, ale také na libovolném operátoru porovnání, například je větší než (>), je menší než (<) nebo není rovno (<>). Spojení, která nejsou založena na rovnocennosti, se nazývají nerovná spojení.

Nerovné spojení použijte, pokud chcete kombinovat řádky ze dvou zdrojů dat na základě hodnot polí, které nejsou shodné. Toto spojení je obvykle založeno na některém z následujících operátorů porovnání: je větší než (>), je menší než (<), je větší než nebo rovno (>=) nebo je menší než nebo rovno (<=). Počet řádků vrácených nerovným spojením založeným na operátoru není rovno (<>) může být téměř shodný jako v případě křížového spojení a interpretace výsledků může být obtížná.

Postup při použití nerovného spojení

Nerovná spojení nejsou podporována v návrhovém zobrazení. Chcete-li tato spojení použít, je nutné přepnout do zobrazení SQL. Můžete však vytvořit spojení v návrhovém zobrazení, přepnout do zobrazení SQL, vyhledat operátor porovnání je rovno (=) a nahradit jej požadovaným operátorem. Dotaz lze znovu otevřít v návrhovém zobrazení, pouze pokud nejdříve v zobrazení SQL změníte operátor porovnání zpět na rovná se (=).

Začátek stránky

Odstranění spojení

Pokud aplikace Access automaticky vytvoří spojení, které nechcete, nebo pokud spojení vytvoříte omylem (například spojení mezi dvěma poli, která mají nepodobné datové typy), můžete toto spojení odstranit.

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

  2. Stiskněte klávesu DELETE.

– nebo –

  • V návrhové mřížce dotazu klepněte pravým tlačítkem myši na spojení, které chcete odebrat, a klepněte na příkaz Odstranit.

Začátek stránky

Poznámka : Upozornění ke strojovému překladu: Tento článek přeložil počítačový systém bez zásahu člověka. Společnost Microsoft nabízí tyto strojové překlady proto, aby umožnila uživatelům, kteří nemluví anglicky, získat informace o produktech, službách a technologiích této společnosti. Protože je tento článek strojově přeložený, může obsahovat slovní, syntaktické nebo gramatické chyby.

Viz taky

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

Zkombinovat výsledků několika vyberte dotazů pomocí sjednocovacího dotazu

Vytvořit dotaz založený na více tabulek

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

Sdílení Facebook Facebook Twitter Twitter E-mail E-mail

Byly tyto informace užitečné?

Výborně! Je ještě něco dalšího, co byste nám chtěli dát vědět?

Jak bychom ho mohli vylepšit?

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

×