ALL, DISTINCT, DISTINCTROW, TOP predikátumok

ALL, DISTINCT, DISTINCTROW, TOP predikátumok

Az Structured Query Language (strukturált lekérdezőnyelv – SQL)-lekérdezések által kijelölt rekordok körét szabják meg.

Szintaxis

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
FROM tábla

Egy a fenti predikátumokat tartalmazó SELECT utasítás az alábbi részekből áll:

Rész

Leírás

ALL

Alapértelmezett választás, amennyiben a fenti predikátumok egyikét sem használja. A Microsoft Access-adatbázismotor minden olyan rekordot visszaad, amely megfelel az SQL-karakterlánc/utasítás szereplő feltételeknek. Az alábbi két példa egyenértékű, mindkettő az Alkalmazottak tábla összes rekordját adja vissza:

SELECT ALL * FROM Alkalmazottak ORDER BY Alkalmazottkód;

SELECT * FROM Alkalmazottak ORDER BY Alkalmazottkód;

DISTINCT

Elhagyja azokat a rekordokat, amelyek többszörös adatokat tartalmaznak a kijelölt mezőkben. Ahhoz, hogy a lekérdezés eredményében szerepeljenek, a SELECT utasításban felsorolt mezőkben lévő értékeknek egyedieknek kell lenniük. Például az Employees tábla több azonos vezetéknevű személy adatait is tartalmazhatja. Ha két olyan rekord is van, amelynél a LastName (vezetéknév) mező tartalma Kovács, az alábbi SQL-utasítás ezek közül csak egyet fog visszaadni:

SELECT DISTINCT LastName
FROM Employees;

Ha a DISTINCT predikátumot elhagyja, a lekérdezés mindkét Kovács vezetéknevet tartalmazó rekordot visszaadja.

Ha a SELECT záradék egynél több mezőt tartalmaz, akkor az összes mezőben található értékek kombinációjának kell egyedinek lennie egy rekord esetében ahhoz, hogy a rekord szerepeljen az eredményben.

A DISTINCT predikátumot használó lekérdezések kimenete nem frissíthető, és nem tükrözi a más felhasználók által később végrehajtott módosításokat.

DISTINCTROW

Mezők helyett teljes rekordok alapján hagyja el a többszörös adatokat. Vegyünk például egy olyan lekérdezést, amely a Vevőkód alapján illeszti a Vevők és a Rendelések táblát. A Vevők tábla nem tartalmaz többszörös Vevőkód mezőket, a Rendelések tábla viszont igen, hiszen egy-egy vevőhöz több rendelés is tartozhat. Az alábbi SQL-utasítás szemlélteti, hogy a DISTINCTROW segítségével hogyan kérdezheti le azoknak a cégeknek a listáját, amelyekhez legalább egy rendelés tartozik, ha a rendelések további részleteire nem kíváncsi:

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 a DISTINCTROW predikátumot elhagyja, a lekérdezés több sort is visszaad minden olyan cég esetében, amelyhez egynél több rendelés tartozik.

A DISTINCTROW csak akkor hatásos, ha a lekérdezés által érintett táblák közül kijelöl bizonyos mezőket, de nem az összest. A DISTINCTROW predikátumot az alkalmazás figyelmen kívül hagyja, ha a lekérdezésben csak egyetlen tábla szerepel, vagy ha az összes tábla minden mezőjét megjeleníti.

TOP n [PERCENT]

Az ORDER BY záradék segítségével felállított sorrend elején vagy végén található, megadott tartományba eső rekordokat adja vissza. Tegyük fel, hogy az 1994-es évfolyam első 25 tanulójának nevét szeretné megkapni:

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

Ha az ORDER BY záradékot elhagyja, a lekérdezés 25 tetszőleges, a WHERE záradék feltételeit kielégítő rekordot ad vissza a Students (tanulók) táblából.

A TOP kijelentés nem választ az egyenlő értékek közül. Az előbbi példában, ha a 25. és 26. legmagasabb átlagos vizsgapontszám egyenlő, a lekérdezés 26 rekordot fog visszaadni.

A PERCENT fenntartott szó segítségével a rekordok bizonyos százalékát is lekérdezheti az ORDER BY záradék által felállított sor elejéről vagy végéről. Tegyük fel, hogy az első 25 tanuló helyett az osztály utolsó 10 százalékára kíváncsi:

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

Az ASC kijelentés jelzi, hogy az értéksor végét szeretné megkapni. A TOP kijelentést követő értéknek előjel nélküli Integer adattípus kell lennie.

A TOP nem befolyásolja azt, hogy a lekérdezés frissíthető-e vagy sem.

tábla

Annak a táblának a neve, amelyből a rekordokat lekérdezi.



Ismeretek bővítése
Oktatóanyagok megismerése
Új szolgáltatások listájának lekérése
Részvétel az Office Insider programban

Hasznos volt az információ?

Köszönjük a visszajelzését!

Köszönjük visszajelzését. Jobbnak látjuk, ha az Office egyik támogatási szakemberéhez irányítjuk.

×