ALL, DISTINCT, DISTINCTROW en TOP, predicaten

ALL, DISTINCT, DISTINCTROW en TOP, predicaten

Vermeldt de records die met SQL-query's zijn geselecteerd.

Syntaxis

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
FROM tabel

Een SELECT-instructie die deze predicaten bevat, heeft de volgende argumenten:

Onderdeel

Beschrijving

ALL

Dit argument wordt verondersteld als u geen van de predicaten gebruikt. De Microsoft Access-database-engine selecteert alle records die voldoen aan de voorwaarden in de SQL-instructie. De volgende twee voorbeelden hebben hetzelfde resultaat: alle records uit de tabel Werknemers:

SELECT ALL *
FROM Employees
ORDER BY EmployeeID;
SELECT *
FROM Employees
ORDER BY EmployeeID;

DISTINCT

Dit argument geeft aan dat records met dubbele gegevens in de geselecteerde velden moeten worden overgeslagen. De waarden voor elk veld dat in de SELECT-instructie wordt vermeld, moeten uniek zijn om in het resultaat van de query te worden opgenomen. Meerdere werknemers in een tabel Werknemers kunnen bijvoorbeeld dezelfde achternaam hebben. Als het veld Achternaam voor twee records de achternaam Wolthuis bevat, geeft de volgende SQL-instructie als resultaat slechts één record die de achternaam Wolthuis bevat:

SELECT DISTINCT LastName
FROM Employees;

Als u het argument DISTINCT weglaat, geeft deze query als resultaat beide records met de achternaam Wolthuis.

Als de SELECT-component meerdere velden bevat, wordt een bepaalde record alleen in de resultaten opgenomen als de combinatie van waarden uit alle velden uniek zijn.

De uitvoer van een query waarin het argument DISTINCT wordt gebruikt, kan niet worden bijgewerkt en houdt geen rekening met latere wijzigingen door andere gebruikers.

DISTINCTROW

Als dit argument wordt gebruikt, worden gegevens weggelaten op basis van volledige dubbele records, niet alleen dubbele velden. U kunt bijvoorbeeld een query maken waarin de tabellen Klanten en Orders worden samengevoegd op basis van het veld Klant-id. De tabel Klanten bevat geen dubbele Klant-id-velden, maar de tabel Orders wel omdat elke klant meerdere orders kan hebben. De volgende SQL-instructie toont u hoe u het argument DISTINCTROW kunt gebruiken om een lijst te maken met bedrijven die ten minste één order hebben, maar zonder details over deze orders:

SELECT DISTINCTROW CompanyName
FROM Customers INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY CompanyName;

Als u het argument DISTINCTROW weglaat, levert deze query meerdere rijen op voor elk bedrijf met meer dan één order.

DISTINCTROW heeft alleen effect als u velden selecteert uit sommige, maar niet alle, tabellen die in de query worden gebruikt. DISTINCTROW wordt genegeerd als uw query slechts één tabel bevat, of als u velden uit alle tabellen laat weergeven.

TOP n [PERCENT]

Geeft als resultaat een bepaald aantal records boven of onder aan een bereik dat door een ORDER BY-component is aangeduid. U wilt bijvoorbeeld de namen van de beste 25 studenten van het schooljaar 1994 weten:

SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;

Als u de ORDER BY-component niet gebruikt, geeft de query als resultaat een willekeurige reeks 25 records uit de tabel Studenten die voldoen aan de WHERE-component.

Met het predicaat TOP wordt geen keuze gedaan uit gelijke waarden. Als in het voorgaande voorbeeld het 25e en 26e gemiddeld eindcijfer identiek is, geeft de query als resultaat 26 records.

U kunt ook het gereserveerde woord PERCENT gebruiken om als resultaat een bepaald percentage records te krijgen dat boven of onder aan een bepaald bereik valt, aangeduid door een ORDER BY-component. Stel dat u niet de beste 25 studenten wilt weten, maar wel de 10 procent met de slechtste resultaten van dat schooljaar:

SELECT TOP 10 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage ASC;

Met het predicaat ASC krijgt u als resultaat de laagste waarden. De waarde na TOP moet een geheel getal zonder teken zijn.

TOP heeft geen invloed op het feit of de query al dan niet kan worden bijgewerkt.

tabel

De naam van de tabel waaruit records worden opgehaald.



Uw Office-vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Office Insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

Hartelijk dank voor uw feedback! Het lijkt ons een goed idee om u in contact te brengen met een van onze Office-ondersteuningsagents.

×