Predikáty ALL, DISTINCT, DISTINCTROW, TOP
Applies ToAccess pre Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Určuje záznamy vybraté pomocou dotazov SQL.

Syntax

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENTO]]]Tabuľka FROM

Príkaz SELECT obsahujúci tieto predikáty má nasledujúce časti:

Časť

Popis

ALL

Predpokladá sa, že ak nezahrniete jeden z predikátov. Databázový stroj programu Microsoft Access vyberie všetky záznamy, ktoré spĺňajú podmienky v príkaze SQL. Nasledujúce dva príklady sú rovnocenné a vracajú všetky záznamy z tabuľky Zamestnanci:

SELECT ALL *FROM EmployeesORDER BY EmployeeID;
SELECT *FROM EmployeesORDER BY EmployeeID;

DISTINCT

Vynechá záznamy, ktoré vo vybratých poliach obsahujú duplicitné údaje. Ak chcete byť zahrnutí do výsledkov dotazu, hodnoty pre každé pole uvedené v príkaze SELECT musia byť jedinečné. Niekoľko zamestnancov uvedených v tabuľke Zamestnanci môže mať napríklad rovnaké priezvisko. Ak v poli Priezvisko obsahujú kováč dva záznamy, nasledujúci príkaz SQL vráti iba jeden záznam, ktorý obsahuje smitha:

SELECT DISTINCT LastNameFROM Employees;

Ak vynecháte funkciu DISTINCT, tento dotaz vráti oba Smithove záznamy.

Ak klauzula SELECT obsahuje viac ako jedno pole, kombinácia hodnôt zo všetkých polí musí byť jedinečná, aby sa daný záznam zahrnul do výsledkov.

Výstup dotazu, ktorý používa funkciu DISTINCT, nie je aktualizovateľný a neodráža následné zmeny vykonané inými používateľmi.

DISTINCTROW

Vynechá údaje založené na celých duplicitných záznamoch, nielen duplicitných poliach. Môžete napríklad vytvoriť dotaz, ktorý spojí tabuľky Zákazníci a Objednávky v poli IdZákazníka. Tabuľka Zákazníci neobsahuje žiadne duplicitné polia CustomerID, ale tabuľka Objednávky je, pretože každý zákazník môže mať veľa objednávok. Nasledujúci príkaz SQL ukazuje, ako môžete použiť funkciu DISTINCTROW na vytvorenie zoznamu spoločností, ktoré majú aspoň jednu objednávku, ale bez akýchkoľvek podrobností o týchto objednávkach:

SELECT DISTINCTROW CompanyNameFROM Customers INNER JOIN OrdersON Customers.CustomerID = Orders.CustomerIDORDER BY CompanyName;

Ak vynecháte funkciu DISTINCTROW, tento dotaz vytvorí viacero riadkov pre každú spoločnosť, ktorá má viac ako jednu objednávku.

Funkcia DISTINCTROW sa prejaví iba vtedy, keď vyberiete polia z niektorých, ale nie všetkých tabuliek použitých v dotaze. Funkcia DISTINCTROW sa ignoruje, ak dotaz obsahuje iba jednu tabuľku alebo ak vykonávate výstupné polia zo všetkých tabuliek.

TOP n [PERCENTO]

Vráti určitý počet záznamov, ktoré spadajú do hornej alebo dolnej časti rozsahu určeného klauzulou ORDER BY. Predpokladajme, že chcete mená 25 najlepších študentov z triedy roku 1994:

SELECT TOP 25FirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage DESC;

Ak nezahrniete klauzulu ORDER BY, dotaz vráti ľubovoľnú množinu 25 záznamov z tabuľky Študenti, ktoré spĺňajú klauzulu WHERE.

Predikát TOP nevyberá medzi rovnakými hodnotami. V predchádzajúcom príklade platí, že ak je priemer dvadsiateho piateho a dvadsiateho šiesteho najvyššieho stupňa rovnaký, dotaz vráti 26 záznamov.

Vyhradené slovo PERCENT môžete použiť aj na vrátenie určitého percenta záznamov, ktoré spadajú do hornej alebo dolnej časti rozsahu určeného klauzulou ORDER BY. Predpokladajme, že namiesto 25 najlepších študentov chcete posledných 10 percent triedy:

SELECT TOP 10 PERCENTFirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage ASC;

Predikát ASC určuje vrátenie posledných hodnôt. Hodnota, ktorá nasleduje za top, musí byť celé číslo, ktoré nie je zapísané.

Funkcia TOP neovplyvňuje, či je dotaz aktualizovateľný.

tabuľka

Názov tabuľky, z ktorej sú načítané záznamy.

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.