Sissejuhatus Accessi SQL-keelde

Andmebaasist andmete toomiseks tuleb kasutada SQL-keelt (Structured Query Language). SQL on arvutikeel, mis sarnaneb inglise keelega ja mida mõistavad andmebaasiprogrammid. SQL-i tundmine on oluline, sest kõik Microsoft Accessi päringud kasutavad SQL-i. SQL-keele toimimise mõistmine aitab teil luua paremaid päringuid ja hõlbustab nende päringute parandamist, mis ei tagasta soovitud andmeid.

Märkus. : Veebipäringu puhul ei saa SQL-i redigeerida.

Selle artikli teemad

Mis on SQL?

SQL-i põhiklauslid: SELECT, FROM ja WHERE

Tulemite sortimine: ORDER BY

Töötamine summeeritud andmetega: GROUP BY ja HAVING

Päringutulemite ühendamine: UNION

Lisateavet SELECT-klausli kohta

Lisateavet FROM-klausli kohta

Lisateavet WHERE-klausli kohta

Mis on SQL?

SQL on faktikogumite ja nende omavaheliste seostega töötamiseks mõeldud arvutikeel. SQL-i kasutavad andmetega töötamiseks relatsioonilised andmebaasiprogrammid, näiteks Access. Sarnaselt paljude arvutikeeltega on SQL mitme standardimisorgani, nagu ISO ja ANSI poolt tunnustatud rahvusvaheline standard.

SQL-keele abil kirjeldatakse andmekogumeid, mille abil saate vastata küsimustele. SQL-i kasutamisel peate kasutama õiget süntaksit. Süntaks on komplekt reegleid, mida tuleb keele elementide kombineerimisel järgida. SQL-süntaks põhineb inglise keele süntaksil ja kasutab mitmeid Visual Basic for Applications (VBA) süntaksiga sarnaseid elemente.

Näiteks lihtne SQL-lause, mis toob kõigi nende kontaktisikute perekonnanimed, kelle eesnimi on Mary, võiks sarnaneda järgmisega:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

Märkus. : SQL-i kasutatakse lisaks andmete töötlemisele ka andmebaasiobjektide (nt tabelite) kujunduse muutmiseks. SQL-i osa, mida kasutatakse andmebaasiobjektide muutmiseks, nimetatakse andmekirjelduskeeleks (DDL). Selles teemas DDL-i ei käsitleta. Lisateabe saamiseks lugege artiklit Tabelite ja registrite loomine ja muutmine andmekirjelduspäringu abil.

SELECT-laused

Andmekogumi kirjeldamiseks SQL-i abil kasutatakse SELECT-lauset. SELECT-lause sisaldab andmebaasist päritava andmekogumi täielikku kirjeldust. See sisaldab järgmist teavet:

  • millistes tabelites andmed paiknevad;

  • millised on seosed erinevatest allikatest pärinevate andmete vahel;

  • millistelt väljadelt või milliste arvutustega andmed saadakse;

  • kriteeriumid, millele kaasatavad andmed peavad vastama;

  • kas ja kuidas tulemeid sortida;

SQL-klauslid

SQL-lause sisaldab klausleid. Iga klausel täidab SQL-lauses kindlat funktsiooni. Mõni klausel on SELECT-lauses kohustuslik. Järgmises tabelis on loetletud levinumad SQL-klauslid.

SQL-klausel

Mida teeb

Nõutav

SELECT

Loetleb huvipakkuvaid andmeid sisaldavad väljad.

Jah

FROM

Loetleb tabelid, mis sisaldavad SELECT-klauslis loetletud välju.

Jah

WHERE

Määrab väljakriteeriumid, millele iga tulemitesse kaasatav kirje peab vastama.

Ei

ORDER BY

Määrab tulemite sortimise järjestuse.

Ei

GROUP BY

Loetleb kokkuvõttefunktsioone sisaldavas SQL-lauses väljad, mis pole SELECT-klauslis summeeritud.

Ainult juhul, kui sellised väljad on olemas

HAVING

Määrab kokkuvõttefunktsioone sisaldavas SQL-lauses tingimused, mis rakendatakse SELECT-lauses summeeritud väljadele.

Ei

SQL-i terminid

Iga SQL-lause koosneb terminitest, mida võib võrrelda sõnaliigiga. Järgmises tabelis loetletakse SQL-i terminite tüübid.

SQL-i termin

Võrreldav sõnaliik

Määratlus

Näide

identifikaator

nimisõna

Nimi, mille abil tuvastatakse andmebaasiobjekt (nt välja nimi).

Kliendid. [Telefoninumber]

tehtemärk

tegu- või määrsõna

Võtmesõna, mis tähistab toimingut või muudab seda.

AS

konstant

nimisõna

Muutumatu väärtus (nt arv või väärtus NULL).

42

avaldis

omadussõna

Identifikaatorite, tehtemärkide, konstantide ja funktsioonide kombinatsioon, mille tulemiks on üksikväärtus.

>= Tooted.[Ühiku hind]

Lehe algusse

SQL-i põhiklauslid: SELECT, FROM ja WHERE

SQL-lause üldkuju on järgmine:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Märkmed : 

  • Access ignoreerib SQL-lauses olevaid reapiire. Sellegipoolest on kasulik nii enda kui teiste huvides SQL-lause loetavuse parandamiseks kirjutada iga klausel eraldi reale.

  • Iga SELECT-lause lõpeb semikooloniga (;). Semikoolon võib olla lause viimase klausli lõpus või omaette real.

Accessi näide

Järgnev näide illustreerib, milline võiks lihtne SQL-lause Accessis välja näha.

SQL-objektivahekaart, kus on kuvatud SELECT-lause

1. SELECT-klausel

2. FROM-klausel

3. WHERE-klausel

Järgmist SQL-lauset tuleb lugeda: „Vali tabeli Kontaktid väljadel Meiliaadress ja Ettevõte talletatavad andmed, eriti kirjed, millel on väljal Linn väärtus Seattle“.

Analüüsime seda näidet klauslite kaupa, et näha, kuidas SQL-süntaks töötab.

SELECT-klausel

SELECT [E-mail Address], Company

See on klausel SELECT. See koosneb tehtemärgist (SELECT) ja sellele järgnevaist kahest identifikaatorist ([Meiliaadress] ja Ettevõte).

Kui identifikaator sisaldab tühikuid või erimärke (nt „Meiliaadress“), tuleb see ümbritseda nurksulgudega.

SELECT-klausel ei pea määratlema, millistes tabelites väljad asuvad ja see ei saa määratleda andmete kaasamise tingimusi.

SELECT-lauses peab SELECT-klausel alati eelnema FROM-klauslile.

FROM-klausel

FROM Contacts

See on FROM-klausel. See koosneb tehtemärgist (FROM) ja sellele järgnevast identifikaatorist (Kontaktid).

FROM-klausel ei loetle valitavaid välju.

WHERE-klausel

WHERE City="Seattle"

See on WHERE-klausel. See koosneb tehtemärgist (WHERE) ja sellele järgnevast avaldisest (Linn="Seattle").

Märkus. : Erinevalt SELECT- ja FROM-klauslitest pole WHERE-klausel SELECT-lauses nõutav.

Klauslite SELECT, FROM ja WHERE abil saate teha paljusid SQL-i toiminguid. Lisateavet nende klauslite kasutamise kohta leiate järgmistest selle artikli lõpus toodud jaotistest.

Lisateavet SELECT-klausli kohta

Lisateavet FROM-klausli kohta

Lisateavet WHERE-klausli kohta

Tulemite sortimine: ORDER BY

Sarnaselt Microsoft Office Exceliga võimaldab ka Access päringu tulemeid andmelehel sortida. Tulemite sortimisviisi saab määrata ka päringus klausli ORDER BY abil. Klausel ORDER BY on SQL-lause viimane klausel.

Klausel ORDER BY loetleb sortimisel kasutatavad väljad järjestuses, mille alusel soovite sortimistoiminguid rakendada.

Oletame näiteks, et soovite tulemeid sortida esmalt välja Ettevõte järgi laskuvas järjestuses ja – kui leidub kirjeid, millel on välja Ettevõte väärtus sama – seejärel välja Meiliaadress väärtuste järgi tõusvas järjestuses. Teie klausel ORDER BY võiks välja näha järgmine:

ORDER BY Company DESC, [E-mail Address]

Märkus. : Vaikimisi sordib Access väärtused tõusvas järjestuses (A-Z, väikseimast suurimani). Laskuvas järjestuses sortimiseks kasutage võtmesõna DESC.

Lisateavet klausli ORDER BY kohta leiate teemast Klausel ORDER BY.

Lehe algusse

Töötamine summeeritud andmetega: GROUP BY ja HAVING

Mõnikord on tarvis töötada summeeritud andmetega (nt kuu kogumüügi või laoseisu kõige kallima üksusega). Selleks tuleb SELECT-klausli väljale rakendada kokkuvõttefunktsioon. Näiteks kui soovite päringu tulemis näha iga ettevõtte kohta salvestatud meiliaadresse, võiks teie SELECT-klausel välja näha järgmine:

SELECT COUNT([E-mail Address]), Company

Saadaolevad kokkuvõttefunktsioonid sõltuvad väljal olevate andmete tüübist või avaldisest, mida soovite kasutada. Lisateavet kokkuvõttefunktsioonide kohta leiate artiklist SQL-i kokkuvõttefunktsioonid.

Väljade määratlemine, mida kokkuvõttefunktsioonis ei kasutata: klausel GROUP BY

Kui kasutate kokkuvõttefunktsioone, tuleb luua ka klausel GROUP BY. GROUP BY loetleb kõik väljad, millele kokkuvõttefunktsioone ei rakendata. Kui rakendate kokkuvõttefunktsioone kõigile päringu väljadele, pole vaja klauslit GROUP BY luua.

Klausel GROUP BY järgneb vahetult klauslile WHERE või selle puudumisel vahetult klauslile FROM. Klausel GROUP BY loetleb väljad klauslis SELECT kuvamise järjestuses.

Jätkates eelmise näitega, siis näiteks kui SELECT-klausel rakendab kokkuvõttefunktsiooni väljale [Meiliaadress], aga mitte väljale Ettevõte, peaks teie klausel GROUP BY olema umbes järgmine:

GROUP BY Company

Lisateavet klausli GROUP BY kohta leiate artiklist Klausel GROUP BY.

Kokkuvõtteväärtuste piiramine rühmitamiskriteeriumiga: klausel HAVING

Kui soovite piirata tulemeid kriteeriumide abil, aga välja, millele te neid rakendada soovite, kasutab kokkuvõttefunktsioon, ei saa te klauslit WHERE kasutada. Selle asemel tuleb kasutada klauslit HAVING. Klausli HAVING tööpõhimõte sarnaneb klausliga WHERE, kuid seda kasutatakse liitandmete puhul.

Oletame, et kasutate SELECT-klausli esimese välja puhul funktsiooni AVG (mis arvutab keskmise väärtuse).

SELECT COUNT([E-mail Address]), Company

Kui soovite piirata tulemeid vastavalt COUNT-funktsiooni väärtusele, ei saa te seda kriteeriumit kasutada WHERE-klauslis. Selle asemel tuleb kriteerium kirjutada klausliga HAVING. Näiteks kui soovite, et päring tooks read ainult siis, kui ettevõttega on seotud mitu meiliaadressi, võiks teie HAVING-klausel välja näha umbes järgmine:

HAVING COUNT([E-mail Address])>1

Märkus. : Päringul võib olla nii WHERE- kui HAVING-klausel – nende väljade kriteeriumid, mida kokkuvõttefunktsioonis ei kasutata, esitatakse WHERE-klauslis ja kokkuvõttefunktsioonis kasutatavate väljade kriteeriumid esitatakse HAVING-klauslis.

Lisateavet klausli HAVING kohta leiate artiklist Klausel HAVING.

Lehe algusse

Päringutulemite ühendamine: UNION

Kui soovite mitme sarnase valikpäringu tulemeid ühtse kogumina läbi vaadata, saate seda teha tehtemärgi UNION abil.

UNION võimaldab ühendada kaks SELECT-lauset üheks lauseks. Kombineeritavatel SELECT-lausetel peab olema võrdne arv väljundvälju ja need peavad olema samas järjekorras ja sisaldama sama või sarnast tüüpi andmeid. Päringu käivitamisel ühendatakse kummagi tulemi andmed ühel väljundväljal, seega on päringu väljundil sama arv välju kui igal valikpäringul.

Märkus. : Ühispäringu jaoks on andmetüübid Number ja Tekst ühilduvad.

Tehtemärgi UNION kasutamisel saate võtmesõna ALL abil määrata, kas päringutulemisse tuleks kaasata ka duplikaatread.

Kahte SELECT-lauset ühendava ühispäringu SQL-süntaksi baaskuju on järgmine:

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;

Oletame näiteks, et teil on tabel nimega Tooted (Products) ja tabel nimega Teenused (Services). Mõlemas tabelis on väljad, mis sisaldavad toote või teenuse nime, hinda, garantiitingimusi ja saadavust ning teavet selle kohta, kas toodet või teenust pakutakse eksklusiivselt. Kuigi toodete tabelis on garantiitingimused ja teenuste tabelis on teave garantiiteenuse kohta, on põhiteave sama (kas tootel või teenusel on kvaliteeditagatis). Nende nelja välja liitmine mõlemast tabelist toimub järgmise ühispäringu abil.

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;

Lisateavet mitme SELECT-lause ühendamise kohta tehtemärgi UNION abil leiate artiklist Mitme valikpäringu ühendamine üheks ühispäringuks

Lehe algusse

Lisateavet SELECT-klausli kohta

SELECT-lauses loetleb klausel SELECT väljad, mis sisaldavad teie kasutatavaid andmeid.

Identifikaatorite ümbritsemine nurksulgudega

SELECT-klauslis loetletud välja nime võib panna nurksulgudesse. Kui nimes ei ole erimärke (nt kirjavahemärgid) ega tühikuid, pole nurksulud nõutavad. Kui nimes on erimärke või tühikuid, peate kasutama nurksulge.

Näpunäide. : Tühikuid sisaldavat nime on hõlbus lugeda ja see aitab teil vormide ja aruannete kujundamisel säästa aega, kuid SQL-lausete kirjutamisel võib juhtuda, et peate nimede kirjutamiseks rohkem tippima. Kui panete andmebaasiobjektidele nimesid, arvestage sellega.

Kui teie SQL-lauses on kaks või enam sama nimega välja, tuleb SELECT-klausli väljanimele lisada iga välja andmeallika nimi. Andmeallika nimi peab vastama FROM-klauslis kasutatavale nimele.

Kõikide väljade valimine

Kui soovite kaasata andmeallika kõik väljad, võite need loetleda SELECT-klauslis ükshaaval, aga võite kasutada ka metamärki tärni (*). Tärni kasutamisel määrab Access ise, milliseid välju andmeallikas sisaldab, ja kaasab need kõik. See tagab õiged päringutulemid ka juhul, kui andmeallikasse on lisatud uusi välju.

SQL-lauses saab tärni kasutada nii ühe kui mitme andmeallika korral. Kui kasutate tärni ja andmeallikaid on mitu, peate tärnile lisama andmeallika nime, et Access teaks, millise andmeallika kõik väljad päringusse kaasata.

Oletame näiteks, et soovite valida kõik väljad tabelist Tellimused, aga tabelist Kontaktid soovite valida ainult meiliaadressi. Teie SELECT-klausel võiks välja näha umbes järgmine:

SELECT Orders.*, Contacts.[E-mail Address]

Märkus. : Pidage oma tärni kasutamise üle arvestust. Kui andmeallikasse lisatakse hiljem uusi välju ja te pole sellega arvestanud, ei pruugi päringu tulem olla ootuspärane.

Erinevate väärtuste valimine

Kui teate, et teie lause valib ka tarbetuid andmeid, aga teie sooviksite näha ainult erinevaid väärtusi, saate SELECT-klauslis kasutada võtmesõna DISTINCT. Oletame näiteks, et iga teie klient esindab erinevat valdkonda ning mõnel neist on sama telefoninumber. Kui soovite iga telefoninumbrit näha ainult ühe korra, võiks teie SELECT-klausel välja näha umbes järgmine:

SELECT DISTINCT [txtCustomerPhone]

Väljade või avaldiste asendusnimede kasutamine: võtmesõna AS

Andmelehel kuvatava välja silti saab muuta, kasutades selleks SELECT-klauslis võtmesõna AS ja välja sünonüümi. Välja sünonüüm on nimi, mis omistatakse päringus kasutatavale väljale tulemi parema loetavuse huvides. Näiteks kui soovite valida andmeid väljalt txtCustPhone ja väli sisaldab klientide telefonumbreid, saate tulemi loetavust parandada SELECT-lauses välja sünonüümi kasutades, nagu on kujutatud järgmises näites:

SELECT [txtCustPhone] AS [Customer Phone]

Märkus. : Kui kasutada SELECT-klauslis avaldist, on välja sünonüümide kasutamine nõutav.

Valimine avaldise abil

Mõnikord on tarvis teostada andmete põhjal arvutusi või tuua ainult osa andmeid. Oletame näiteks, et soovite väljal Sünnikuupäev olevate andmete alusel tuua klientide sünniaastat. Teie SELECT-lause võiks välja näha umbes järgmine:

SELECT DatePart("yyyy",[BirthDate]) AS [Birth Year]

See avaldis koosneb funktsioonist DatePart ja kahest argumendist – "yyyy" (konstant) ja [BirthDate] (identifikaator).

Väljana võib kasutada suvalist korrektset avaldist juhul, kui avaldise tulemiks on üks sisendväärtus.

Lehe algusse

Lisateavet FROM-klausli kohta

SELECT-lauses määrab FROM-klausel tabelid või päringud, mille andmeid SELECT-klausel kasutab.

Oletame, et soovite teada saada kliendi telefoninumbrit. Eeldusel, et tabeli nimi, mis sisaldab telefoninumbriga välja, on tblCustomer, võiks FROM-klausel välja näha umbes järgmine:

FROM tblCustomer

Identifikaatorite ümbritsemine nurksulgudega

Välja nimed võib panna nurksulgudesse. Kui nimes ei ole erimärke (nt kirjavahemärgid) ega tühikuid, pole nurksulud nõutavad. Kui nimes on erimärke või tühikuid, peate kasutama nurksulge.

Näpunäide. :  Tühikuid sisaldavat nime on hõlbus lugeda ja see aitab teil vormide ja aruannete kujundamisel säästa aega, kuid SQL-lausete kirjutamisel võib juhtuda, et peate nimede kirjutamiseks rohkem tippima. Kui panete andmebaasiobjektidele nimesid, arvestage sellega.

Andmeallikate asendusnimede kasutamine

SELECT-lause andmeallikaks olevale tabelile saab viidata teise nimega, kui kasutada FROM-klauslis tabeli sünonüümi. Tabeli sünonüüm on andmeallikale omistatud nimi, mida kasutatakse SQL-lause parema loetavuse huvides või päringus, kus andmeallikaks on avaldis. See on kasulik juhul, kui andmeallika nimi on pikk või seda on raske tippida, eriti, kui erinevate tabelite väljadel on samad nimed.

Näiteks kui soovite valida andmeid kahelt väljalt mille mõlema nimi on ID ja millest üks asub tabelis tblCustomer ja teine tabelis tblOrder, võiks teie SELECT-klausel välja näha umbes järgmine:

SELECT [tblCustomer].[ID], [tblOrder].[ID]

Kasutades FROM-klauslis tabeli sünonüüme, saate päringu tippimist lihtsustada. Teie FROM-klausel koos tabeli sünonüümidega võiks välja näha umbes järgmine:

FROM [tblCustomer] AS [C], [tblOrder] AS [O]

Seejärel saate neid tabeli sünonüüme kasutada SELECT-klauslis.

SELECT [C].[ID], [O].[ID]

Märkus. : Tabeli sünonüümi kasutades võite oma SQL-päringus andmeallikale viidata nii sünonüümi kui täisnime kaudu.

Seonduvate andmete ühendamine

Kui teil on vaja ühendada kaks paari kirjeid kahest andmeallikast päringutulemi üksikkirjetekst, tuleb kasutada ühendamist. Ühendamine on SQL-i toiming, mis määrab andmeallikate omavahelise seose ja selle, kas ühe andmeallika andmed tuleks tulemisse kaasata, kui teises andmeallikas vastavad andmed puuduvad.

Kahest andmeallikast andmete ühendamiseks tuleb teha ühendamistoiming, mille aluseks on mõlema andmeallika ühine väli. Kui sellel väljal olevad väärtused kattuvad, ühendatakse tulemis nende kirjete andmed.

Lisaks andmete ühendamisele saab ühendamisel määrata, kas ühest tabelist tuleks tulemisse andmeid kaasata, kui teises tabelis puudub seotud kirje.

Oletame näiteks, et soovite päringus kasutada andmeid kahest tabelist, tabelist tblCustomer ja tabelist tblOrder. Mõlemas tabelis on klienti identifitseeriv väli Kliendi_ID. Igale tabeli tblCustomer kirjele võib tabelis tblOrder vastata üks või mitu kirjet ning väärtuste vastavuse saab määrata välja Kliendi_ID kaudu.

Kui soovite tabeleid ühendada nii, et päring ühendaks kirjeid mõlemast tabelist (v.a kummagi tabeli need kirjed, mille kohta teises tabelis vastavat kirjet ei leidu), võiks teie FROM-klausel välja näha umbes järgmine (loetavuse huvides on lisatud reapiir):

FROM [tblCustomer] INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]

Microsoft Office Accessis toimuvad ühendamised SELECT-lause FROM-klauslis. Ühendamisi on kahte tüüpi: sisemised ühendamised ja välised ühendamised. Järgmistes jaotistes kirjeldatakse neid ühendamistüüpe.

Sisemised ühendamised

Sisemised ühendamised on levinuim ühendamiste tüüp. Sisemise ühendamisega päringu käivitamisel kaasatakse tulemisse ainult need kirjed, millel on mõlemas tabelis ühine väärtus.

Sisemise ühendamise süntaks on järgmine (loetavuse huvides on lisatud reapiir):

FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field2

Järgmises tabelis kirjeldatakse toimingu INNER JOIN erinevaid osi.

Osa

Kirjeldus

tabel1, tabel2

Nende tabelite nimed, mille kirjed liidetakse.

väli1, väli2

Ühendatavate väljade nimed. Kui need pole numbriväljad, peab väljadel olema sama andmetüüp ja need peavad sisaldama sarnaseid andmeid, kuid neil ei pea olema sama nimi.

võrdlusmärk

Suvaline relatsiooniline võrdlusmärk: "=", "<", ">", "<=", ">=" või "<>".

Välised ühendamised

Välised ühendamised sarnanevad sisemiste ühendamistega, kuna kirjeldavad, mil viisil kahe andmeallika andmeid ühendada. Erinevus seisneb selles, et välised ühendamised määravad ka seda, kas kaasata andmeid ühiste väärtuste puudumisel. Välised ühendamised on suunatavad: nende puhul saab määrata, kas kaasata kõik kirjed esimesest andmeallikast (vasakpoolne ühendamine) või kaasata kõik kirjed teisest andmeallikast (parempoolne ühendamine).

Välise ühendamise süntaks on järgmine:

FROM tabel1 [ LEFT | RIGHT ] JOIN tabel2
ON tabel1.väli1võrdlusmärk tabel2.väli2

Järgmises tabelis kirjeldatakse toimingute LEFT JOIN ja RIGHT JOIN erinevaid osi.

Osa

Kirjeldus

tabel1, tabel2

Nende tabelite nimed, mille kirjed liidetakse.

väli1, väli2

Ühendatavate väljade nimed. Väljade andmetüüp peab olema sama ja need peavad sisaldama sama tüüpi andmeid, kuid neil ei pea olema sama nimi.

võrdlusmärk

Suvaline relatsiooniline võrdlusmärk: "=", "<", ">", "<=", ">=" või "<>".

Ühendamise kohta leiate lisateavet teemast Tabelite ja päringute ühendamine.

Lehe algusse

Lisateavet WHERE-klausli kohta

Kui soovite piirata päringu toodavate kirjete arvu andmete abil, peate kasutama SELECT-lause WHERE-klausli kriteeriumit. Päringu kriteerium sarnaneb valemiga – see on string, mis võib sisaldada väljaviiteid, tehtemärke ja konstante. Päringukriteeriumid on üks avaldise tüüpe.

Järgmises tabelis on esitatud mõned näidiskriteeriumid ning selgitatud, kuidas need toimivad.

Kriteeriumid

Kirjeldus

>25 ja <50

Seda kriteeriumi rakendatakse numbriväljale (nt Hind või Kaupade_arv). Kaasatakse vaid need kirjed, mille välja väärtus on suurem kui 25 ja väiksem kui 50.

DateDiff ("aaaa", [Sünnipäev], Kuupäev()) > 30

Kriteeriumi rakendatakse väljale andmetüübiga Kuupäev/kellaaeg (nt Sünnikuupäev). Päringutulemisse kaasatakse vaid kirjed, milles inimese sünnikuupäeva ja tänase kuupäeva vaheline aeg on pikem kui 30 aastat.

Is Null

Kriteeriumi on võimalik rakendada suvalisele väljale, et kuvada kirjed, mille puhul antud välja väärtus on Null.

Nagu tabelist nähtub, võivad kriteeriumid üksteisest väga palju erineda, sõltudes neid kasutava välja andmetüübist ning teie vajadustest. Mõned kriteeriumid on lihtsad ning kasutavad põhilisi tehtemärke ja konstante. Keerukamates kriteeriumites on kasutatud funktsioone, erilisi tehtemärke ja väljaviiteid.

NB! : Kui välja kasutatakse kokkuvõttefunktsioonis, ei saa sellele määrata kriteeriume WHERE-klauslis. Liitväljadele kriteeriumide rakendamiseks tuleb kasutada klauslit HAVING. Lisateavet leiate jaotisest Töö summeeritud andmetega: GROUP BY ja HAVING

WHERE-klausli süntaks

WHERE-klausli baassüntaks on järgmine:

WHERE field = criterion

Oletame näiteks, et soovite leida kliendi telefoninumbrit, kuid mäletate vaid seda, et tema perekonnanimi on Bagel. Selle asemel, et läbi vaadata kõik andmebaasis leiduvad telefoninumbrid, saate WHERE-klausli abil tulemusi piirata ja teha soovitud telefoninumbri leidmise kergemaks. Eeldusel, et perekonnanimed on väljal nimega Perekonnanimi, võiks WHERE-klausel välja näha järgmine:

WHERE [LastName]='Bagel'

Märkus. : WHERE-klausli kriteeriumide alus ei pea olema väärtuste võrdsus. Kasutada võib ka muid võrdlusmärke, näiteks suurem kui (>) või väiksem kui (<). Näiteks WHERE [Hind]>100.

Andmeallikate ühendamine WHERE-klausli abil

Mõnikord on tarvis ühendada andmeallikaid väljade järgi, milles on küll samad andmed, kuid need on erinevat tüüpi. Näiteks ühe välja andmetüüp võib olla Arv ja soovite seda võrrelda teise tabeli väljaga, mille andmetüübiks on Tekst.

Ühendamisi ei saa teha kahe erineva andmetüübiga välja vahel. Ühendamaks andmeid kahe andmeallika väljade väärtuste alusel, millel on erinev andmetüüp, peate looma WHERE-klausli, mis kasutab ühte välja võtmesõna LIKE abil teise välja kriteeriumina.

Oletame näiteks, et soovite kasutada andmeid tabeleist tabel1 ja tabel2, aga ainult siis, kui andmed väljal väli1 (tabeli tabel1 Tekst-tüüpi väli) vastavad andmetele väljal väli2 (table2 Arv-tüüpi väli). Teie WHERE-klausel võiks välja näha umbes järgmine:

WHERE field1 LIKE field2

Lisateavet WHERE-klauslis kasutatavate kriteeriumide loomisest leiate artiklist Päringukriteeriumide näited.

Lehe algusse

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.

×