Vytvorenie dotazu na základe viacerých tabuliek

Proces tvorby a používania dotazov v Accesse niekedy môže byť jednoduchou záležitosťou výberu polí z tabuľky, použitia nejakých kritérií a zobrazenia výsledkov. Ale čo robiť v oveľa častejšom prípade, keď sú údaje rozložené vo viacerých tabuľkách? Našťastie je tu možnosť vytvoriť dotaz, ktorý kombinuje informácie z viacerých zdrojov. Táto téma sa zaoberá niekoľkými scenármi získavania údajov z viacerých tabuliek a popisuje, ako na to.

Čo vás zaujíma?

Použitie údajov zo súvisiacej tabuľky na vylepšenie informácií v dotaze

Spojenie údajov dvoch tabuliek pomocou vzťahov s treťou tabuľkou

Zobrazenie všetkých záznamov z dvoch podobných tabuliek

Použitie údajov zo súvisiacej tabuľky na vylepšenie informácií v dotaze

Existujú prípady, v ktorých je dotaz založený na jednej tabuľke a obsahuje potrebné informácie, ale po získaní údajov z ďalšej tabuľky by výsledky dotazu boli ešte lepšie a užitočnejšie. Povedzme, že vo výsledkoch dotazu sa vám zobrazí zoznam ID zamestnancov. Poviete si, že užitočnejšie by bolo vo výsledkoch zobraziť meno zamestnanca, ale mená zamestnancov sa nachádzajú v inej tabuľke. Ak chcete zobraziť vo výsledkoch dotazu mená zamestnancov, musíte do dotazu zahrnúť obe tabuľky.

Vytvorenie dotazu z hlavnej tabuľky a súvisiacej tabuľky pomocou Sprievodcu dotazom

  1. Skontrolujte, či tabuľky majú definovaný vzťah v okne Vzťahy.

    Postup

    1. Na karte Databázové nástroje v skupine Zobraziť alebo skryť kliknite na položku Vzťahy.

    2. Na karte Návrh v skupine Vzťahy kliknite na položku Všetky vzťahy.

    3. Identifikujte tabuľky, ktoré majú definovaný vzťah.

      • Ak sa tabuľky zobrazujú v okne Vzťahy, skontrolujte, či už majú definovaný vzťah.

        Vzťah sa zobrazí ako čiara, ktorá spája dve tabuľky v spoločnom poli. Môžete dvakrát kliknúť na čiaru vzťahu a zobraziť, ktoré polia v tabuľkách sú týmto vzťahom spojené.

      • Ak sa tabuľky v okne Vzťahy nezobrazujú, musíte ich pridať.

        Na karte Návrh v skupine Zobraziť alebo skryť kliknite na položku Názvy tabuliek.

        Dvakrát kliknite na každú tabuľku, ktorú chcete zobraziť, a potom kliknite na položku Zavrieť.

    4. Ak nenájdete vzťah medzi týmito dvoma tabuľkami, vytvorte ho presunutím poľa z jednej tabuľky do poľa v druhej tabuľke. Polia, v ktorých vytvárate vzťah medzi tabuľkami, musia obsahovať zhodné typy údajov.

      Poznámka: Môžete vytvoriť vzťah medzi poľom, ktoré obsahuje typ údajov AutoNumber, a poľom, ktoré obsahuje typ údajov Number, ak toto pole obsahuje veľkosť poľa typu Long Integer. Často je to v prípade, keď vytvárate vzťah „one-to-many“.

      Zobrazí sa dialógové okno Úprava vzťahov.

    5. Kliknite na tlačidlo Vytvoriť a vytvorte vzťah.

      Ďalšie informácie o možnostiach dostupných pri vytváraní vzťahu nájdete v článku Vytvorenie, úprava alebo odstránenie vzťahu.

    6. Zavrite okno Vzťahy.

  2. Na karte Vytvoriť v skupine Dotazy kliknite na položku Sprievodca dotazom. Ak používate Access 2007, kliknite na karte Vytvoriť v skupine Iné na položku Sprievodca dotazom.

  3. V dialógovom okne Nový dotaz kliknite na položku Sprievodca jednoduchým dotazom a potom kliknite na tlačidlo OK.

  4. V rozbaľovacom poli Tabuľky alebo dotazy kliknite na tabuľku obsahujúcu základné informácie, ktoré chcete zahrnúť do dotazu.

  5. V zozname Dostupné polia kliknite na prvé pole, ktoré chcete zahrnúť do dotazu, a potom kliknite na tlačidlo s jednou šípkou doprava a presuňte toto pole do zoznamu Vybraté polia. Zopakujte rovnaký postup s každým ďalším poľom tejto tabuľky, ktoré chcete zahrnúť do dotazu. Môžu to byť polia, ktoré chcete mať vo výstupe dotazu, alebo polia, ktoré chcete použiť na obmedzenie riadkov vo výstupe použitím kritérií.

  6. V rozbaľovacom poli Tabuľky alebo dotazy kliknite na tabuľku obsahujúcu súvisiace údaje, ktoré chcete použiť na vylepšenie výsledkov dotazu.

  7. Polia, ktoré chcete použiť na vylepšenie výsledkov dotazu, pridajte do zoznamu Vybraté polia a potom kliknite na tlačidlo Ďalej.

  8. V časti Chcete podrobný alebo súhrnný dotaz? kliknite buď na položku Podrobnosti, alebo Súhrn.

    Ak chcete, aby dotaz nepoužil žiadnu agregačnú funkciu (Sum, Avg, Min, Max, Count, StDev alebo Var), vyberte podrobný dotaz. Ak chcete, aby dotaz použil niektorú agregačnú funkciu, vyberte súhrnný dotaz. Po dokončení výberu kliknite na tlačidlo Ďalej.

  9. Kliknutím na tlačidlo Dokončiť zobrazíte výsledky.

Príklad pomocou vzorovej databázy Northwind

V nasledujúcom príklade sa pomocou Sprievodcu dotazom vytvorí dotaz, ktorý zobrazí zoznam objednávok, prepravný poplatok za každú objednávku a meno zamestnanca, ktorý objednávku vybavil.

Poznámka: V tomto príklade sa použije úprava vzorovej databázy Northwind. Ak chcete, môžete najprv vytvoriť záložnú kópiu vzorovej databázy Northwind a až potom postupovať podľa tohto príkladu so záložnou kópiou.

Vytvorenie dotazu pomocou Sprievodcu dotazom

  1. Otvorte vzorovú databázu Northwind. Zavrite prihlasovací formulár.

  2. Na karte Vytvoriť v skupine Dotazy kliknite na položku Sprievodca dotazom. Ak používate Access 2007, kliknite na karte Vytvoriť v skupine Iné na položku Sprievodca dotazom.

  3. V dialógovom okne Nový dotaz kliknite na položku Sprievodca jednoduchým dotazom a potom kliknite na tlačidlo OK.

  4. V rozbaľovacom poli Tabuľky alebo dotazy kliknite na položku Tabuľka: Objednávky.

  5. V zozname Dostupné polia dvakrát kliknite na položku IDObjednávky a presuňte toto pole do zoznamu Vybraté polia. Dvakrát kliknite na položku Prepravný poplatok a presuňte toto pole do zoznamu Vybraté polia.

  6. V rozbaľovacom poli Tabuľky alebo dotazy kliknite na položku Tabuľka: Zamestnanci.

  7. V zozname Dostupné polia dvakrát kliknite na položku Meno a presuňte toto pole do zoznamu Vybraté polia. Dvakrát kliknite na položku Priezvisko a presuňte toto pole do zoznamu Vybraté polia. Kliknite na tlačidlo Ďalej.

  8. Keďže vytvárate zoznam všetkých objednávok, použijete podrobný dotaz. Ak sčítavate prepravný poplatok podľa zamestnanca alebo používate niektorú ďalšiu agregačnú funkciu, použijete súhrnný dotaz. Kliknite na položku Podrobný (zobrazia sa všetky polia všetkých záznamov) a potom kliknite na tlačidlo Ďalej.

  9. Kliknutím na tlačidlo Dokončiť zobrazíte výsledky.

Dotaz vráti zoznam objednávok, pričom každá bude obsahovať prepravný poplatok a meno a priezvisko zamestnanca, ktorí ju vybavil.

Na začiatok stránky

Spojenie údajov dvoch tabuliek pomocou vzťahov s treťou tabuľkou

Údaje v dvoch tabuľkách často navzájom súvisia prostredníctvom tretej tabuľky. Dôvodom zvyčajne je, že údaje medzi prvými dvoma tabuľkami spája vzťah Many-to-many. V mnohých prípadoch je užitočné pri návrhu databázy vzťah many-to-many medzi dvoma tabuľkami rozdeliť do dvoch vzťahov one-to-many pomocou troch tabuliek. Môžete to urobiť tak, že vytvoríte tretiu tabuľku, čiže spojovaciu alebo vzťahovú tabuľku, ktorá obsahuje primárny kľúč a cudzí kľúč pre každú z ostatných tabuliek. Medzi každým cudzím kľúčom v spojovacej tabuľke a príslušným primárnym kľúčom niektorej z ostatných tabuliek sa vytvorí vzťah one-to-many. V takýchto prípadoch bude potrebné do dotazu zahrnúť všetky tri tabuľky dokonca aj vtedy, ak chcete načítať údaje iba z dvoch.

Vytvorenie výberového dotazu pomocou tabuliek so vzťahom many-to-many

  1. Na karte Vytvoriť kliknite v skupine Dotazy na položku Návrh dotazu. Ak používate Access 2007, kliknite na karte Vytvoriť v skupine Iné na položku Návrh dotazu.

    Otvorí sa dialógové okno Zobrazenie tabuľky.

  2. V dialógovom okne Zobrazenie tabuľky dvakrát kliknite na dve tabuľky, ktoré obsahujú údaje, ktoré chcete zahrnúť do dotazu, a tiež spojovaciu tabuľku, ktorá ich prepája, a potom kliknite na tlačidlo Zavrieť.

    Všetky tri tabuľky sa zobrazia v pracovnom priestore návrhu dotazu a budú spojené v príslušných poliach.

  3. Dvakrát kliknite na každé pole, ktoré chcete použiť vo výsledkoch dotazu. Každé z týchto polí potom zobrazí mriežka návrhu dotazu.

  4. V mriežke návrhu dotazu v riadku Kritériá zadajte kritériá polí. Ak chcete použiť kritérium poľa bez zobrazenia poľa vo výsledkoch dotazu, zrušte začiarknutie políčka pre toto pole v riadku Zobraziť.

  5. Ak chcete výsledky zoradiť podľa hodnôt v poli, v mriežke návrhu dotazu kliknite na položku Vzostupne alebo Zostupne (v závislosti od toho, ktorým spôsobom chcete záznamy zoradiť) v riadku Zoradiť pre toto pole.

  6. Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.

    Access zobrazí výstup dotazu a použije na to údajové zobrazenie.

Príklad pomocou vzorovej databázy Northwind

Poznámka: V tomto príklade sa použije úprava vzorovej databázy Northwind. Ak chcete, môžete najprv vytvoriť záložnú kópiu vzorovej databázy Northwind a až potom postupovať podľa tohto príkladu so záložnou kópiou.

Povedzme, že získate novú príležitosť: dodávateľ v Riu de Janeiro objavil vašu webovú lokalitu a chcel by s vami obchodovať. Pôsobí však iba v Riu a neďalekom São Paule. Dodáva každú kategóriu potravinových produktov, s ktorými obchodujete. Ide o pomerne veľký podnik, ktorý žiada záruky, že mu dokážete zabezpečiť prístup k dostatočnému objemu potenciálnych predajov, aby sa to oplatilo: predaj aspoň R$ 20 000,00 ročne (okolo $ 9 300,00). Dokážete im zabezpečiť taký trh, aký vyžadujú?

Údaje potrebné na zodpovedanie tejto otázky sa nachádzajú na dvoch miestach: v tabuľke Zákazníci a v tabuľke Podrobnosti objednávky. Tieto tabuľky sú navzájom prepojené tabuľkou Objednávky. Vzťahy medzi týmito tabuľkami už boli definované. V tabuľke Objednávky môže každá objednávka obsahovať iba jedného zákazníka vo vzťahu k tabuľke Zákazníci v poli IDZákazníka. Každý záznam v tabuľke Podrobnosti objednávky sa vzťahuje iba na jednu objednávku v tabuľke Objednávky v poli IDObjednávky. Daný zákazník tak môže mať veľa objednávok a každá z nich bude mať veľa podrobností objednávky.

V tomto príklade sa vytvorí krížový dotaz zobrazujúci celkový predaj za rok v Riu de Janeiro a São Paule.

Vytvorenie dotazu v návrhovom zobrazení

  1. Otvorte databázu Northwind. Zavrite prihlasovací formulár.

  2. Na karte Vytvoriť kliknite v skupine Dotazy na položku Návrh dotazu. Ak používate Access 2007, kliknite na karte Vytvoriť v skupine Iné na položku Návrh dotazu.

    Otvorí sa dialógové okno Zobrazenie tabuľky.

  3. V dialógovom okne Zobrazenie tabuľky dvakrát kliknite na tabuľky Zákazníci, ObjednávkyPodrobnosti objednávky a potom kliknite na tlačidlo Zavrieť.

    Všetky tri tabuľky sa zobrazia v pracovnom priestore návrhu dotazu.

  4. V tabuľke Zákazníci dvakrát kliknite na pole Mesto a pridajte ho do mriežky návrhu dotazu.

  5. V mriežke návrhu dotazu zadajte v stĺpci Mesto do riadka Kritériá text V meste (Rio de Janeiro, São Paulo). Týmto sa do dotazu zahŕňajú iba tie záznamy, kde sa zákazník nachádza v niektorom z týchto miest.

  6. V tabuľke Podrobnosti objednávky dvakrát kliknite na polia DátumDodania a JednotkováCena.

    Polia sa pridajú do mriežky návrhu dotazu.

  7. V stĺpci DátumDodania v mriežke návrhu dotazu vyberte riadok Pole. Nahraďte položku [DátumDodania] položkou Rok: Formát([DátumDodania],"rrrr"). Vytvorí sa alias poľa, Rok, ktorý vám umožní použiť len rok z hodnoty v poli DátumDodania.

  8. V stĺpci JednotkováCena v mriežke návrhu dotazu vyberte riadok Pole. Nahraďte položku [JednotkováCena] položkou Predaj: [Podrobnosti objednávky].[JednotkováCena]*[Množstvo]-[Podrobnosti objednávky].[JednotkováCena]*[Množstvo]*[Zľava]. Vytvorí sa alias poľa, Predaj, ktorý vypočíta predaj pre každý záznam.

  9. Na karte Návrh v skupine Typ dotazu kliknite na položku Krížový.

    V mriežke návrhu dotazu sa zobrazia dva nové riadky, SúhrnKrížová tabuľka.

  10. V stĺpci Mesto v mriežke návrhu dotazu kliknite na riadok Krížová tabuľka a potom kliknite na položku Záhlavie riadka.

    Vďaka tomu sa hodnoty mesta zobrazia ako záhlavie riadka (t. j. dotaz vráti jeden riadok pre každé mesto).

  11. V stĺpci Rok kliknite na riadok Krížová tabuľka a potom kliknite na položku Záhlavie stĺpca.

    Vďaka tomu sa hodnoty roka zobrazia ako záhlavie stĺpca (t. j. dotaz vráti jeden stĺpec pre každé mesto).

  12. V stĺpci Predaj kliknite na riadok Krížová tabuľka a potom kliknite na položku Hodnota.

    Vďaka tomu sa hodnoty predaja zobrazia v prieniku riadkov a stĺpca (t. j. dotaz vráti jednu hodnotu predaja pre každú kombináciu mesta a roka).

  13. V stĺpci Predaj kliknite na riadok Súčty a potom kliknite na položku Súčet.

    Dotaz potom sčíta hodnoty v tomto stĺpci.

    V riadku Súčty ďalších dvoch stĺpcov môžete nechať predvolenú hodnotu Zoskupiť podľa, pretože chcete zobraziť jednotlivé hodnoty týchto stĺpcov, nie agregačné hodnoty.

  14. Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.

Teraz máte dotaz, ktorý vráti celkový predaj podľa rokov v Riu de Janeiro a São Paule.

Na začiatok stránky

Zobrazenie všetkých záznamov z dvoch podobných tabuliek

Niekedy budete chcieť kombinovať údaje z dvoch tabuliek, ktoré majú zhodnú štruktúru, ale jedna z nich sa nachádza v inej databáze. Pozrite si nasledujúci scenár.

Povedzme, že ste analytik, ktorý pracuje s údajmi študentov. Spúšťate iniciatívu zdieľania údajov medzi vašou školou a inou školou s cieľom vylepšiť učebné osnovy oboch škôl. Pri niektorých otázkach, ktoré chcete preskúmať, by bolo lepšie pozrieť sa na všetky záznamy z oboch škôl naraz namiesto skúmania záznamov každej školy osobitne.

Údaje druhej školy môžete importovať do novej tabuľky v databáze, ale potom sa vo vašej databáze neprejavia žiadne zmeny údajov druhej školy. Lepším riešením je vytvoriť prepojenie na tabuľky druhej školy a potom vytvoriť dotazy, ktoré po spustení údaje skombinujú. Budete tak môcť analyzovať údaje ako jednu množinu a nebudete musieť robiť dve analýzy a snažiť sa ich interpretovať ako jednu.

Ak chcete zobraziť všetky záznamy z dvoch tabuliek so zhodnou štruktúrou, použijete zjednocovací dotaz.

Zjednocovacie dotazy nie je možné zobraziť v návrhovom zobrazení. Môžete ich vytvoriť pomocou príkazov SQL, ktoré zadáte do karty objektu zobrazenie SQL.

Vytvorenie zjednocovacieho dotazu pomocou dvoch tabuliek

  1. Na karte Vytvoriť kliknite v skupine Dotazy na položku Návrh dotazu. Ak používate Access 2007, kliknite na karte Vytvoriť v skupine Iné na položku Návrh dotazu.

    Otvorí sa mriežka návrhu dotazu a zobrazí sa dialógové okno Zobrazenie tabuľky.

  2. V dialógovom okne Zobrazenie tabuľky kliknite na tlačidlo Zavrieť.

  3. Na karte Návrh kliknite v skupine Typ dotazu na položku Zjednocovací.

    Dotaz sa prepne z návrhového zobrazenia do zobrazenia SQL. V tomto bode bude karta objektu zobrazenie SQL prázdna.

  4. V zobrazení SQL zadajte výraz SELECT a za ním zoznam polí z prvej tabuľky, ktorú chcete zahrnúť do dotazu. Názvy polí je potrebné uvádzať v hranatých zátvorkách a oddeliť ich čiarkami. Po dokončení zadávania názvov polí stlačte kláves ENTER. Kurzor sa presunie o jeden riadok nadol v zobrazení SQL.

  5. Zadajte výraz FROM a za ním názov prvej tabuľky, ktorú chcete zahrnúť do dotazu. Stlačte kláves ENTER.

  6. Ak chcete zadať kritérium pre pole z prvej tabuľky, zadajte výraz WHERE a za ním názov poľa, operátor porovnania (zvyčajne znak rovnosti (=)) a kritérium. Môžete pridať aj ďalšie kritériá na koniec klauzuly WHERE pomocou kľúčového slova AND a rovnakej syntaxe ako pri prvom kritériu, napríklad WHERE [ÚroveňTriedy]="100" AND [PridelenéHodiny]>2. Po dokončení zadávania kritérií stlačte kláves ENTER.

  7. Zadajte výraz UNION a potom stlačte kláves ENTER.

  8. Zadajte výraz SELECT a za ním zoznam polí z druhej tabuľky, ktorú chcete zahrnúť do dotazu. Z tejto tabuľky by ste mali uviesť rovnaké polia, aké ste zahrnuli z prvej tabuľky, a mali by ste ich uviesť v rovnakom poradí. Názvy polí je potrebné uvádzať v hranatých zátvorkách a oddeliť ich čiarkami. Po dokončení zadávania názvov polí stlačte kláves ENTER.

  9. Zadajte výraz FROM a za ním názov druhej tabuľky, ktorú chcete zahrnúť do dotazu. Stlačte kláves ENTER.

  10. V prípade potreby môžete pridať klauzulu WHERE podľa popisu v kroku 6 tohto postupu.

  11. Koniec dotazu označíte zadaním bodkočiarky (;).

  12. Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.

    Výsledky sa zobrazia v údajovom zobrazení.

Na začiatok stránky

Pozrite tiež

Spojenie tabuliek a dotazov

Rozšírte svoje zručnosti práce s balíkom Office
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.

×