Predikátum
Predikátumok: ALL, DISTINCT, DISTINCTROW és TOP. A predikátummal a válaszba kerülő rekordok körét tudjuk meghatározni. Az alapértelmezett predikátum az ALL.
SQL lekérdezésben meghatározza, hogy mely rekordok legyenek kiválasztva.
ALL
Az alapértelmezett érték. A Microsoft Jet adatbázis-motor minden olyan rekordot kiválaszt, amely megfelel az SQL utasításban megadott feltételeknek. A következő két utasítás azonos eredményt ad vissza, mindkettő az Alkalmazottak tábla összes rekordját visszakeresi:
SELECT ALL *
|
SELECT *
|
DISTINCT
Kihagyja azokat a rekordokat, amelyek a megadott mezőben azonos értékeket tartalmaznak. Ahhoz, hogy a rekordok bekerüljenek a lekérdezésbe, a SELECT utasításban felsorolt minden mezőnek egyedi értéket kell tartalmaznia. Például az Alkalmazottak táblában több személynek lehet azonos a vezetékneve. Ha két rekord van a táblában, amelyben a Vezetéknév mező értéke egyaránt Szabó, akkor a következő SQL utasítás csak az egyiket teszi bele a lekérdezésbe:
SELECT DISTINCT Vezetéknév
FROM Alkalmazottak;
Ha elhagyjuk a DISTINCT beállítást, a lekérdezésbe mindkét Szabó belekerül. Ha a SELECT záradék több mezőt tartalmaz, az adott rekord minden mezőjének egyedi értéket kell tartalmaznia ahhoz, hogy bekerülhessen a lekérdezésbe. A DISTINCT beállítású lekérdezés nem frissíthető, és a későbbi változtatások nem befolyásolják.
DISTINCTROW
A lekérdezésből kimaradnak azok a rekordok, amelyeket a tábla többször tartalmaz. Például létrehozhatunk egy lekérdezést, amelyben a Vevők és a Rendelések táblákat a Vevőkód mezőn keresztül összekapcsoljuk. A Vevők táblában minden Vevőkód mező különböző, A Rendelések táblában viszont nem, mert egy vevő többféle árucikket is rendelhet. A következő utasításban a DISTINCTROW beállítást olyan lista készítésére használjuk, amelyben minden cég neve szerepel, amely legalább egyszer leadott megrendelést:
SELECT DISTINCTROW Cégnév
FROM Vevők INNER JOIN Rendelések
ON Vevők.Vevőkód = Rendelések.Vevőkód
ORDER BY Cégnév;
Ha kihagyjuk a DISTINCTROW beállítást, a lekérdezésbe többször is bekerülnek azok a cégek, amelyeknek nem csak egy megrendelése volt.A DISTINCTROW predikátumnak csak akkor van értelme, ha egyes táblákból választunk ki mezőket. Ha a lekérdezésben csak egy tábla szerepel vagy minden táblából kiválasztunk mezőket, a DISTINCTROW predikátum figyelmen kívül marad.
TOP n [PERCENT]
A lekérdezésbe a megadott számú rekord kerül be az ORDER BY záradéknak megfelelően a lista elejéről vagy végéről. A következő példával az 1994.-ben érettségizettek közül a huszonöt legjobb tanulmányi átlagú diák nevét keressük vissza:
SELECT TOP 25 Keresztnév, Vezetéknév
FROM Diákok
WHERE Év = 1994
ORDER BY [Tanulmányi átlag] DESC;
Ha az utasításba nem tesszük be az ORDER BY záradékot, a lekérdezésbe véletlenszerűen kerül be huszonöt olyan rekord, amely megfelel a WHERE záradék feltételeinek. A TOP predikátum nem választ az azonos értékek közül. Ha az előző példában a huszonötödik és huszonhatodik legjobb tanulmányi átlag azonos, a lekérdezés huszonhat rekordot fog tartalmazni.A PERCENT foglalt szóval százalékos arányban is megadhatjuk a keresett rekordok mennyiségét. A következő példában a diákok azon tíz százalékát keressük, akiknek a legrosszabbak voltak az átlaguk:
SELECT TOP 10 PERCENT [Keresztnév], [Vezetéknév]
FROM Diákok
WHERE Év = 1994
ORDER BY [Tanulmányi átlag] ASC;
Az ASC predikátummal kapjuk meg az utolsó értékeket. A TOP foglalt szó után álló értéket előjel nélküli Integer számként kell megadni. A TOP predikátum nem befolyásolja a lekérdezés frissíthetőségét.