Sloučení několika dotazů do jednoho výsledku pomocí sjednocovacího dotazu

Sloučení několika dotazů do jednoho výsledku pomocí sjednocovacího dotazu

Důležité informace:  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.

Předpokládejme databáze aplikace Access obsahuje dva bez relace tabulky – ten, který obsahuje data o zákaznících a jiné obsahujícího data o dodavatele – a obou tabulek obsahují pole kontaktní informace. Rádi byste kontaktní informace z obou tabulek v jednom zobrazení. K tomuto účelu prvním vytvoření výběrového dotazu pro každou tabulku získat kontaktní informace a pak výsledky vytvořením sjednocovacího dotazu.

Poznámka: Obsah v tomto článku jsou určeny pro použití s desktopové databáze Accessu. Nelze vytvořit nebo použití sjednocovacího dotazu v Accessu webových databázích nebo Accessových webových aplikacích.

Potřebujete si osvěžit informace o vytváření základních výběrových dotazů? Podívejte se vytvořit jednoduchý výběrový dotaz.

Nejdřív uvedeme pár věcí, které je potřeba o vytváření sjednocovacího dotazu vědět:

  • Výběrové dotazy, které slučujete ve sjednocovacím dotazu, musí mít stejný počet výstupních polí, která budou ve stejném pořadí a budou obsahovat stejné nebo kompatibilní datové typy. Když spustíte sjednocovací dotaz, data z každé sady odpovídajících polí se sloučí do jednoho výstupního pole, aby měl výstup dotazu stejný počet polí jako každý z příkazů SELECT.

  • Sjednocovací dotaz je specifický příkaz jazyka SQL, takže musí být vytvořený přímo v jazyce SQL. Když chcete vytvářet specifické příkazy SQL (včetně sjednocovacích dotazů), přepněte do zobrazení SQL.

Krok 1: Vytvoření výběrových dotazů

Poznámka: Do dotazu lze sice zahrnout více tabulek nebo dotazů, tento postup však předpokládá, že každý výběrový dotaz obsahuje data pouze z jedné tabulky.

  1. Na kartě Vytvoření klikněte ve skupině Dotazy na tlačítko Návrh dotazu.

  2. V dialogovém okně Zobrazit tabulku poklikejte na tabulku obsahující pole, která chcete zahrnout. Tabulka bude přidána do okna návrhu dotazu.

  3. Zavřete dialogové okno Zobrazit tabulku.

  4. V okně návrhu dotazu poklikejte na každé pole, které chcete zahrnout.
    Při výběru polí dbejte na to, abyste do všech výběrových dotazů přidali stejný počet polí a ve stejném pořadí. Věnujte velkou pozornost datovým typům polí a ujistěte se, zda jsou kompatibilní s datovými typy polí na stejné pozici v ostatních dotazech, které slučujete. Pokud například první výběrový dotaz obsahuje pět polí a první pole obsahuje data typu Datum a čas, zajistěte, aby všechny ostatní výběrové dotazy, které slučujete, také obsahovaly pět polí a jejich první pole bylo typu Datum a čas atd.

  5. Přidáte kritéria do polí tak, že zadáte příslušné výrazů v řádku kritéria v mřížce polí.

  6. Po dokončení přidávání polí a kritérií polí by měl spustit výběrový dotaz a ověřit si jeho výstup. Na kartě Návrh ve skupině výsledky na příkaz Spustit.

  7. Přepněte dotaz do návrhového zobrazení.

  8. Uložte výběrový dotaz a nechejte jej otevřený.

  9. Tento postup opakujte pro každý výběrový dotaz, který chcete přidat.

Další informace o používání kritérií v dotazu najdete v článku použití kritérií v dotazu.

Krok 2: Sloučení výběrových dotazů

V tomto kroku vytvoříte pomocí příkazů SQL sjednocovacího dotazu. (Další informace naleznete v části syntaxe jazyka SQL pod.)

  1. Na kartě Vytvoření klikněte ve skupině Dotazy na tlačítko Návrh dotazu.

  2. Zavřete dialogové okno Zobrazit tabulku.

  3. Na kartě Návrh klikněte ve skupině Dotaz na tlačítko Sjednocovací.

Access skryje okno návrhu dotazu a zobrazí kartu objektu Zobrazení SQL. V tomto okamžiku je karta objektu Zobrazení SQL prázdná.

  1. Klikněte na kartu prvního výběrového dotazu, který chcete sloučit v sjednocovacím dotazu.

  2. Na kartě Domů klikněte na zobrazení > Zobrazení SQL.

  3. Zkopírujte příkaz jazyka SQL pro výběrový dotaz. Klikněte na kartu sjednocovacího dotazu, který jste začali vytvářet v kroku 1.

  4. Vložte příkaz jazyka SQL pro výběrový dotaz na kartu objektu Zobrazení SQL sjednocovacího dotazu.

  5. Odstraňte středník (;) na konci příkazu jazyka SQL pro výběrový dotaz.

  6. Stisknutím klávesy Enter přesuňte kurzor o jeden řádek dolů a na novém řádku zadejte UNION .

  7. Klikněte na kartu dalšího výběrového dotazu, který chcete sloučit v sjednocovacím dotazu.

  8. Opakujte kroky 5 až 10 tohoto postupu, dokud nezkopírujete a nevložíte všechny příkazy jazyka SQL pro výběrové dotazy do okna Zobrazení SQL sjednocovacího dotazu. U posledního příkazu SQL výběrového dotazu neodstraňujte středník ani za něj nic nezadávejte.

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

Výsledky sjednocovacího dotazu se zobrazí v Zobrazení Datový list.

Začátek stránky

Tipy k používání sjednocovacích dotazů

  • Pokud chcete mít možnost rozlišit, které řádky pocházejí z které tabulky, přidejte do každého příkazu SELECT jako pole textový řetězec.

    Pokud třeba jeden příkaz SELECT slouží k načítání polí z tabulky s názvem Produkty a další příkaz SELECT načítá pole z tabulky s názvem Služby, přidejte jako pole na konec prvního příkazu řetězec „Produkt“ a na konec druhého příkazu řetězec „Služba“. Řetězcům taky můžete pomocí klíčového slova AS přiřadit alias pole (třeba „typ“), jak ukazuje tento příklad:

    SELECT field1, field2, ... "Product" AS type

    SELECT field1, field2, ... "Service" AS type

    Výstup dotazu by obsahoval pole s názvem „typ“, které označuje, zda řádek pochází z tabulky Produkty, nebo z tabulky Služby.

  • Každé klíčové slovo UNION slučuje příkazy SELECT, které se nacházejí těsně před ním a těsně za ním. Pokud použijete v dotazu klíčové slovo ALL pouze u některých klíčových slov UNION, budou výsledky obsahovat duplicitní řádky z dvojic příkazů SELECT, které jsou sloučeny pomocí klíčových slov UNION ALL, ale nebudou obsahovat duplicitní řádky z příkazů SELECT, které jsou sloučeny pomocí klíčového slova UNION bez klíčového slova ALL.

  • Počet, datové typy a pořadí polí ve výběrových dotazech si musí odpovídat. Chcete-li zajistit, aby tomu tak bylo, můžete si pomoci výrazy, například výpočty nebo poddotazy.

    Lze například vytvořit shodu mezi polem s rokem ve dvoumístném formátu a polem s rokem ve čtyřmístném formátu použitím funkce Right, která bude extrahovat poslední dvě místa roku ve čtyřmístném formátu.

Použití výsledků sjednocovacího dotazu k vytvoření nové tabulky

Nejdřív použijte sjednocovací dotaz jako vstup pro nový výběrový dotaz a potom použijte tento výběrový dotaz jako základ vytvářecí dotaz, jak ukazuje následující kroky:

  1. Vytvořte a uložte sjednocovací dotaz.

  2. Na kartě Vytvoření klikněte ve skupině Dotazy na tlačítko Návrh dotazu.

  3. V dialogovém okně Zobrazit tabulku klikněte na kartu Dotazy.

  4. Poklikejte na sjednocovací dotaz a potom zavřete dialogové okno Zobrazit tabulku.

    Poznámka: Pokud se na panelu zpráv objeví upozornění zabezpečení, jsou akční dotazy nejspíš zakázané. Jestli chcete akční dotazy povolit, klikněte na panelu zpráv na Povolit obsah.

  5. Když chcete k vytvoření nové tabulky použít všechna pole sjednocovacího dotazu, poklikejte v návrhové mřížce dotazu na kartě objektu sjednocovacího dotazu na hvězdičku (*).

  6. Na kartě Návrh klikněte ve skupině Typ dotazu na položku Vytvářecí.

  7. V dialogu Vytvořit tabulku zadejte název nové tabulky.

  8. Můžete taky zadat jinou databázi, ve které se má tabulka vytvořit.

  9. Klikněte na OK.

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

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

Sjednocovací dotaz můžete použít k provedení úplného Vnější spojení. Úplné vnější spojení neomezuje řádky vrácené z jakékoli ze spojených tabulek, ale sloučí řádky podle hodnot v poli 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 tlačítko Zobrazení a potom na položku Zobrazení SQL.

  3. Stisknutím Ctrl+C zkopírujte kód SQL.

  4. Odstraňte středník na konci klauzule FROM a pak stiskněte 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 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á slovo LEFT JOIN 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čí, ž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 tuto klauzuli WHERE:

    WHERE Products.ID IS NULL

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

  11. Na kartě Návrh klikněte ve skupině Výsledky na příkaz Spustit.
    Výsledky sjednocovacího dotazu se zobrazí v Zobrazení Datový list.

Další informace najdete v tématu spojení tabulek a dotazů.

Začátek stránky

Požadavky a syntaxe jazyka SQL pro sjednocovací dotaz

Některé požadavky na sjednocovací dotaz

  • Výběrové dotazy, které slučujete ve sjednocovacím dotazu, musí mít stejný počet výstupních polí, která budou ve stejném pořadí a budou obsahovat stejné nebo kompatibilní datové typy. Když spustíte sjednocovací dotaz, data z každé sady odpovídajících polí se sloučí do jednoho výstupního pole, aby měl výstup dotazu stejný počet polí jako každý z příkazů SELECT.

    Poznámka: Pro účely sjednocovacího dotazu jsou datové typy Číslo a Text kompatibilní.

  • Sjednocovací dotaz je specifický příkaz jazyka SQL, takže musí být vytvořený přímo v jazyce SQL. Když chcete vytvářet specifické příkazy SQL (včetně sjednocovacích dotazů), přepněte do zobrazení SQL.

Syntaxe sjednocovacího dotazu v jazyce SQL

Ve sjednocovacím dotazu obsahuje každý výběrový dotaz (označovaný taky jako příkaz SELECT) tyto klauzule:

Klauzule

Obsahuje seznam těchto položek

SELECT

Pole obsahující data, která chcete načíst

FROM

Tabulky obsahující tato pole

Volitelné WHERE

Kritéria pro tato pole

Příkazy SELECT se slučují pomocí klíčového slova UNION.

Základní syntaxe SQL pro sjednocovací dotaz vypadá takto:

SELECT field_1[, field_2,…]
FROM table_1[, table_2,…]
UNION [ALL]
SELECT field_a[, field_b,...]
FROM table_a[, table_b,…];

Předpokládejme například, že vaše databáze obsahuje tabulku s názvem Produkty a jinou tabulku s názvem Služby a v obou tabulkách jsou pole, která obsahují název produktu nebo služby, cenu, dostupnost záruky na produkty nebo služby a informace o tom, zda nabízíte produkt nebo službu exkluzivně. Přestože tabulka Produkty obsahuje informace o záruce na produkty a tabulka Služby informace o záruce na služby, základní informace jsou stejné (zda je u určitého produktu nebo služby zaručena kvalita). Ke sloučení čtyř polí ze dvou tabulek můžete použít sjednocovací dotaz, například tento:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services;

Podívejme se podrobněji na předchozí příklad syntaxe:

Syntaxe

Vysvětlení

Další informace

SELECT název, cena, záruka_na_produkt, exkluzivní_nabídka:

První klauzule SELECT

Po klíčovém slovu SELECT následuje seznam identifikátorů označujících pole, ze kterých se mají data načíst.

Klauzule SELECT musí obsahovat alespoň jedno pole.

Tato klauzule SELECT obsahuje identifikátory polí název, cena, záruka_na_produkt a exkluzivní_nabídka.

FROM Produkty:

První klauzule FROM

Klauzule FROM následuje po klauzuli SELECT a spolu tvoří základní příkaz SELECT.

Po klíčovém slovu FROM následuje seznam identifikátorů označujících tabulky, které obsahují pole uvedená v klauzuli SELECT.

Klauzule FROM musí obsahovat alespoň jednu tabulku.

Tato klauzule FROM obsahuje identifikátor tabulky Produkty.

UNION ALL:

Klíčové slovo UNION a volitelné klíčové slovo ALL

Výsledky příkazu SELECT, který předchází klíčovému slovu UNION, se sloučí s výsledky příkazu SELECT, který následuje po klíčovém slovu UNION.

Pokud použijete klíčové slovo ALL, nebudou ze sloučené sady výsledků odebrány případné duplicitní řádky.

Pokud použijete klíčové slovo ALL, může dotaz proběhnout rychleji, protože Access nemusí kontrolovat duplicitní řádky.

Klíčové slovo ALL použijte, když platí některá z těchto podmínek:

  • Jste si jistí, že výsledkem výběrových dotazů nebudou žádné duplicitní řádky.

  • Nezáleží na tom, jestli budou výsledky obsahovat duplicitní řádky.

  • Přejete si, aby duplicitní řádky byly zachovány.

SELECT název, cena, záruka_na_službu, exkluzivní_nabídka:

Druhá klauzule SELECT

Některá pravidla:

  • Druhá klauzule SELECT musí mít stejný počet polí jako první klauzule SELECT.

  • Pole, která sdílejí společná data, musí být v klauzuli uvedená ve stejném pořadí.

  • Pole, která sdílejí společná data, musí být stejného nebo kompatibilního datového typu.

Poznámka: Názvy polí ve výstupu sjednocovacího dotazu pocházejí z první klauzule SELECT. Takže v našem příkladu budou data z polí záruka_na_produkt a záruka_na_službu ve výstupu dotazu obsažená v poli s názvem záruka_na_produkt.

FROM Služby:

Druhá klauzule FROM

Pro tabulky v klauzulích FROM sjednocovacího dotazu neplatí žádná omezení. Můžete vytvořit sjednocovací dotaz používající ve všech klauzulích FROM stejné tabulky. V jednotlivých klauzulích FROM taky můžete mít rozdílný počet tabulek. V našem příkladu má každá klauzule FROM jenom jednu tabulku.

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.

×