Predikaadid ALL, DISTINCT, DISTINCTROW, TOP

Predikaadid ALL, DISTINCT, DISTINCTROW, TOP

Need predikaadid määravad Structured Query Language (SQL)päringutega valitud kirjed.

Süntaks

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

Neid predikaate sisaldav lause SELECT koosneb järgmistest osadest.

Osa

Kirjeldus

ALL

Kui te ühte kindlat predikaati ei kaasa, eeldatakse seda predikaati. Microsoft Accessi andmebaasimootor valib kõik kirjed, mis vastavad SQL-string/-lause tingimustele. Järgmised kaks näidet on võrdsed ja tagastavad kõik kirjed tabelist Töötajad.

SELECT ALL *
FROM Töötajad
ORDER BY TöötajaID;

SELECT * FROM Töötajad ORDER BY TöötajaID;

DISTINCT

Jätab välja kirjed, mis sisaldavad valitud väljadel duplikaatandmeid. Päringu tulemitesse kaasamiseks peavad kõigi lauses SELECT loendatud väljade väärtused olema kordumatud. Näiteks võib mitmel töötajal olla tabelis Töötajad sama perekonnanimi. Kui kaks kirjet sisaldavad väljal Perekonnanimi sõna Smith, tagastab SQL-lause üksnes ühe sõna Smith sisaldava kirje.

SELECT DISTINCT LastName
FROM Employees;

Kui jätate predikaadi DISTINCT ära, tagastab päring mõlemad Smithi sisaldavad kirjed.

Kui klausel SELECT sisaldab rohkem kui ühte välja, peab kirje kaasamiseks tulemustesse olema kõigi väljade väärtuste kombinatsioon kordumatu.

Predikaati DISTINCT kasutava päringu väljundit ei saa värskendada ning see ei kajasta teiste kasutajate edaspidi tehtud muudatusi.

DISTINCTROW

Jätab ära tervetel duplikaatkirjetel – mitte üksnes duplikaatväljadel – põhinevad kirjed. Näiteks saate luua päringu, mis ühendab väljal KliendiID tabelid Kliendid ja Tellimused. Tabel Kliendid ei sisalda duplikaatvälju KliendiID, kuid tabel Tellimused sisaldab, sest igal kliendil on mitu tellimust. Järgmine SQL-lause näitab, kuidas te saate kasutada predikaati DISTINCTROW loendi loomiseks ettevõtetest, kellel on vähemalt üks tellimus, kaasamata seejuures tellimuste üksikasju.

SELECT DISTINCTROW ettevõtte_nimi
FROM kliendid INNER JOIN tellimused
ON kliendid.KliendiID = tellimused.kliendiID
ORDER BY ettevõtte_nimi;

Kui jätate ära predikaadi DISTINCTROW, loob see päring iga ettevõtte jaoks, millel on mitu tellimust, mitu rida.

Predikaadil DISTINCTROW on mõju siis, kui valite väljad mõnest, mitte kõigist päringus kasutatud tabelitest. Predikaati DISTINCTROW ignoreeritakse, kui päring kaasab üksnes ühe tabeli või kõigi tabelite väljundväljad.

TOP n [PERCENT]

Tagastab teatud arvu kirjeid, mis jäävad klausliga ORDER BY määratud vahemiku ülemisse või alumisse ossa. Võite soovida näiteks näha 1994. aasta lennu 25 parima õpilase kirjeid.

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

Kui te ei kaasa klauslit ORDER BY, tagastab päring tabelist Õpilased suvalised 25 kirjet, mis rahuldavad klauslit WHERE.

Predikaat TOP ei vali võrdsete kirjete vahel. Järgmises näites tagastab päring 26 kirjet, kui 25. ja 26. kirje kõrgeim keskmine hinne on sama.

Teatud protsendi kirjete tagastamiseks, mis jäävad klausliga ORDER BY määratud vahemiku ülemisse või alumisse ossa, saate kasutada ka reserveeritud sõna PERCENT. Näiteks võite soovida 25 parima õpilase asemel näha klassis alumise 10% hulka jäävaid õpilasi.

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

Predikaat ASC määrab alumiste väärtuste tagastamise. Predikaadile TOP järgnev väärtus peab olema märgita andmetüüp Täisarv.

Predikaat TOP ei mõjuta seda, kas päringut saab värskendada või mitte.

Tabel

Selle tabeli nimi, kust kirjed alla laaditakse.



Täiendage oma oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liituge Office Insideri programmiga

Kas sellest teabest oli abi?

Täname tagasiside eest!

Täname tagasiside eest! Tundub, et võiksime teid kokku viia ühega meie Office'i tugiagentidest, kes aitab teil probleemi lahendada.

×