Spojování zdrojů dat v dotazu

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 rozebírá různé typy spojení a ukazuje, jak je lze používat v dotazu.

Poznámka : V tomto článku se tabulka termínů slouží k nechtěli zdroj dat. Můžete také dotazu ve spojení stejně jako tabulku.

Základní informace

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

Levé nebo pravé vnější spojení: Zobrazení všech řádků z jedné tabulky a odpovídajících řádků z druhé tabulky

Plné vnější spojení: Zobrazení všech řádků z obou tabulek a jejich zkombinování, pokud existuje společná hodnota

Křížové spojení: všechny možné kombinace řádků

Nerovné spojení: Kombinování záznamů na základě nerovnosti hodnot polí

Odstranění spojení

Přehled

Spojení představují pro dotazy to samé, co pro tabulky představují relace: udávají, jak lze zkombinovat data ze dvou zdrojů na základě společných hodnot. Zde je znázornění spojení v návrhovém zobrazení dotazu, s otevřeným dialogovým oknem vlastností spojení:

Okno Vlastnosti spojení.

Tento řádek mezi tabulkami představuje spojení. Poklikejte na spojení otevřete dialogové okno Vlastnosti spojení (je vidět) a kontrola nebo změna spojení.

Spojení jsou někdy směrová. Tato oblast dialogového okna identifikuje tabulky ve spojení a ukazuje, která pole jsou použita ke spojení tabulek.

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

Lze použít pole z obou tabulek a z každé z nich jsou zobrazena data přiřazená k danému úkolu. Ve vnitřním spojení nejsou zahrnuta žádná další data. Ve vnějším spojení jsou ve výsledcích dotazu rovněž zahrnuty nesouvisející záznamy z jedné tabulky.

Některá spojení jsou vytvořena automaticky

V mnoha případech není nutné se spojeními vůbec zabývat – pokud již tabulky přidávané do dotazu mají relace, aplikace Access vytvoří vnitřní spojení, které je kopií této relace. Většinou chcete toto: způsob jak zajistit, že data získaná ze dvou tabulek jsou správně zkombinována, takže jsou zahrnutá pouze správná data z obou tabulek a nic jiného. V některých případech však chcete, aby bylo spojení obsažnější.

Typy spojení

Existují čtyři základní typy spojení: vnitřní spojení, vnější spojení, křížové spojení a nerovné spojení. Křížová spojení a nerovná spojení jsou pokročilé typy spojení a jsou používána velmi zřídka. Abyste však plně rozuměli tomu, jak spojení fungují, měli byste tyto typy znát.

Vnitřní spojení: pouze související data z obou zkombinovaných tabulek

Vnitřní spojení je případ, kdy aplikace Access zahrne data z tabulky pouze tehdy, když se v tabulce propojené pomocí relace nachází související data, a opačně. Většinu času budete používat vnitřní spojení. Když vytvoříte spojení a neurčíte, o jaký typ se jedná, aplikace Access předpokládá, že chcete vnitřní spojení. Vnitřní spojení jsou užitečná, protože umožňují kombinování dat ze dvou zdrojů na základě sdílených hodnot. Data tedy vidíte pouze tehdy, když je k dispozici úplný obraz.

Vnější spojení: správně zkombinovaná veškerá související data spolu se zbývajícími záznamy z jedné tabulky

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

Plná vnější spojení: všechna data, zkombinována kde je to vhodné

V některých systémech může vnější spojení zahrnovat všechny řádky z obou tabulek, se zkombinovanými odpovídajícími řádky. Toto spojení se nazývá úplné vnější spojení a aplikace Access je explicitně nepodporuje. K dosažení stejného účinku však můžete použít křížové spojení a kritéria.

Křížová spojení: všechna data, zkombinovaná všemi možnými způsoby

Většinu času je křížové spojení vedlejším účinkem přidání dvou tabulek do dotazu, když je poté zapomenete spojit. Aplikace Access takovou situaci interpretuje tak, že chcete vidět všechny záznamy z jedné tabulky zkombinované se všemi záznamy z druhé tabulky – všechny možné kombinace záznamů. Protože nelze zkombinovat žádná data, tento druh spojení většinou neposkytuje užitečné výsledky. Existuje však několik případů, kdy je křížové spojení přesně to, co potřebujete.

Nerovná spojení: stejně jako u běžného spojení, ale s využitím jiného porovnání pro zkombinování řádků

Nerovná spojení využívají k porovnávání hodnot a k určování, zda a jak zkombinovat data, jiný operátor, než je rovnítko (=). Nerovná spojení nejsou explicitně podporována, ale k dosažení stejného účinku můžete použít křížové spojení a kritéria.

Začátek stránky

Vnitřní spojení: 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í jsou vnitřní spojení. Tato spojení poskytnou na základě společných hodnot ve spojených polích dotazu informaci, že řádky v jedné ze spojených tabulek odpovídají řádkům v druhé 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í

Chcete-li vytvořit vnitřní spojení, přetáhněte v návrhové mřížce dotazu pole z jednoho zdroje dat na pole ve druhém zdroji dat. Aplikace Access spojí obě tabulky v těchto polích a zobrazí mezi nimi čáru.

Automatická vnitřní 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 názvem a stejným nebo kompatibilním datovým typem a jedno ze spojených polí je Primární klíč, aplikace Access automaticky vytvoří 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í. Obecně byste je měli vytvořit sami (přetažením pole z jednoho zdroje dat na pole ve druhém zdroji dat). Pokud tak neučiníte, může být výsledkem křížové spojení – pokud to tak nechcete, jedná se o matoucí výsledky.

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.pole1operátor_porovnání tabulka2.pole2

Operace INNER JOIN má 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í. 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.

operátor_porovnání

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

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

Začátek stránky

Levé nebo pravé vnější spojení: Zobrazení všech řádků z jedné tabulky a odpovídajících řádků z druhé tabulky

Vnější spojení poskytnou 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í (kombinující data, když obě tabulky obsahují řádek).

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 : Snadno poznáte tabulky, která je levá tabulka nebo pravá tabulka v daném spojení poklepáním spojení a potom vyhledává v dialogové okno Vlastnosti spojení. Nebo v zobrazení SQL, můžete zkoumat klauzule FROM podrobnosti spojení.

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 poklikejte na spojení, které chcete změnit.

    Zobrazí se dialogové okno Vlastnosti spojení.

  2. V dialogové okno Vlastnosti spojení, Poznámka možností uvedených vedle volby 2 a možnost 3.

  3. Vyberte možnost, kterou chcete použít a potom klikněte na 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 vytvoříte dotaz, který obsahuje LEVÉ SPOJENÍ a VNITŘNÍ SPOJENÍ, aplikace Access nemusí být schopná určit, kterou operaci spojení má provést nejdříve. Protože výsledky se liší v závislosti na tom, zda je nejdříve provedeno levé spojení nebo vnitřní spojení, aplikace Access zobrazí chybovou zprávu o dvojznačných vnějších spojeních.

Tuto chybu napravíte tak, že změníte dotaz, aby bylo jasné, které spojení se má provést jako první.

Vnější spojení a aktualizovatelnost dotazu

V aplikaci pro Access je pole v dotazu nebo ve více tabulkách aktualizovatelné pouze při splnění následujících podmínek:

  • Pole pochází z tabulky dotazu, která představuje nejvíce stranu N – tabulka, která vyhledává data v druhé tabulce.

  • Výstup dotazu zahrnuje primární klíč z tabulky představující nejvíce stranu N.

  • Pokud je tabulka představující nejvíce stranu N součástí vnějšího spojení, je na vnitřní straně spojení: levá tabulka levého vnějšího spojení nebo pravá tabulka pravého vnějšího spojení.

Pokud není některá z těchto podmínek pravdivá, pole bude pouze pro čtení, ať už v datovém listu dotazu nebo v zobrazení založeném na dotazu.

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.pole1operátor_porovnání tabulka2.pole2

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.

operátor_porovnání

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

Další informace o syntaxi vnějšího spojení naleznete v tématu Operace LEFT JOIN, RIGHT JOIN.

Začátek stránky

Plné vnější spojení: Zobrazení všech řádků z obou tabulek a jejich zkombinování, pokud existuje společná hodnota

Pokud chcete ukázat všechny řádky ze dvou tabulek a spojit je na základě společných hodnot, použijte plné vnější spojení. Aplikace Access explicitně nepodporuje plná vnější spojení, ale stejného účinku dosáhnete pomocí křížového spojení a kritérií.

  1. Vytvořte dotaz a přidejte dvě tabulky. Pokud aplikace Access vytvoří nějaká spojení, odstraňte je.

  2. Přidejte pole, která chcete použít pro výstup dotazu.

  3. Přidejte pole spojení z obou tabulek a zrušte pro ně zaškrtnutí políčka v řádku Zobrazit.

  4. V návrhové mřížce dotazu, v poli spojení první tabulky, zadejte v řádku Kritéria pole spojení druhé tabulky. Pokud mají pole spojení stejný název, je nutné při odkazování na tato pole zahrnout i název tabulky.

  5. V řádkuNebo, pod právě zadaným kritériem, zadejte Is Null.

  6. V dalším řádku Nebo (přímo pod tím prvním), pod polem spojení druhé tabulky, zadejte Is Null.

Dotaz vrátí kombinovanou sadu následujících položek:

  • řádky, kde se shodují hodnoty spojených polí, příslušně sloučená data (platná, vnitřní spojení),

  • řádky, kde není pro spojené pole v první tabulce žádná hodnota (platná, vně od levého vnějšího spojení),

  • řádky, kde není pro spojené pole ve druhé tabulce žádná hodnota (platná, vně od pravého vnějšího spojení).

Začátek stránky

Křížové spojení: všechny možné kombinace řádků

Pokaždé, když do dotazu vložíte tabulky, ale nespojíte je, dojde ke křížovému spojení. Aplikace Access zkombinuje všechny řádky z jedné tabulky se všemi řádky z druhé tabulky a výsledkem je takzvaný křížový (kartézský) součin. To obvykle není to, co požadujete, ale křížová spojení mohou být užitečná pro zkoumání hypotéz.

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í

Přidejte do dotazu dvě tabulky, nevytvářejte mezi nimi spojení a do výstupu dotazu zahrňte pole z obou dvou. Aplikace Access zkombinuje jednotlivé řádky z každé tabulky nebo dotazu, bez explicitního spojení s jinou tabulkou nebo dotazem, se všemi ostatními řádky ve výsledcích. Zvažte příklad slevy z předchozího odstavce. Předpokládejme, že máte 91 zákazníků a chcete zobrazit pět možných variant procentuální slevy. Křížové spojení vytvoří 455 řádků (součin 91 a 5).

Pokud jsou mezi vámi přidanými tabulkami relace, vytvoří aplikace Access vnitřní spojení automaticky. Chcete-li vytvořit křížové spojení, můžete v případě potřeby toto automatické spojení odstranit.

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 řádky nejsou zkombinovány na základě sdílených dat a kombinace s ničím nekorespondují.

Začátek stránky

Nerovné spojení: Kombinování záznamů na základě nerovnosti hodnot polí

Spojení nemusí být založena rovnocennosti spojených polí. Spojení může být založeno na libovolném porovnávacím operátoru, jako například je větší než (>), 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é. Nerovná spojení jsou typicky založena 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í

Aplikace Access v návrhovém zobrazení explicitně podporuje nerovná spojení, ale stejného účinku dosáhnete pomocí křížového spojení a kritérií.

  1. Vytvořte dotaz a přidejte dvě tabulky pro nerovné spojení. Pokud aplikace Access automaticky vytvoří nějaká spojení, odstraňte je.

  2. Přidejte požadované výstupní pole.

  3. Přidejte pole spojení z první tabulky a zrušte pro ně zaškrtnutí políčka v řádku Zobrazit.

  4. V řádku Kritéria zadejte operátor nerovnosti, který chcete použít, následovaný polem spojení druhé tabulky.

Dotaz vrátí řádky kombinující data ze dvou tabulek na základě vámi určené nerovnosti.

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 klikněte na spojení, které chcete odebrat.

  2. Stiskněte Odstranit.

– nebo –

  • V návrhové mřížce dotazu klikněte pravým tlačítkem myši na spojení, který chcete odebrat a potom klikněte na 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.

Rozšiřte své znalosti a dovednosti
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.

×