SQL-lausete redigeerimine päringutulemite täpsustamiseks

Rakenduskoht
Microsoft 365 rakendus Access Access 2024 Access 2021 Access 2019 Access 2016

Kui teie päringud ei tööta piisavalt hästi, võib lihtsate SQL-lausete lisamine aidata tulemeid keskenduda. Vaatame mõnda tüüpi SQL-lauseid ja klausleid või osi, mida saate soovitud tulemite saamiseks redigeerida.

Selle artikli teemad

SELECT-lause loomine

SQL-i SELECT-lausel on kaks või kolm klauslit. SELECT-klausel ütleb andmebaasile, kust andmeid otsida, ja palub andmebaasil tagastada kindel tulem.

Märkus.

SELECT-laused lõpevad alati semikooloniga (;) viimase klausli lõpus või SQL-lause lõpus eraldi real.

Järgmine select-lause palub Accessil hankida teavet tabeli Kontaktid veergudest Meiliaadress ja Ettevõte, täpsemalt sealt, kus ta leiab veerust Linn sõna "Seattle".

SQL-objektivahekaart, kus on kuvatud SELECT-lause

Ülaloleval päringul on kolm klauslit: SELECT, FROM ja WHERE.

1. SELECT-klauslis loetletakse veerud, mis sisaldavad andmeid, mida soovite kasutada, ja sisaldab tehtemärki (SELECT), millele järgnevad kaks identifikaatorit (Meiliaadress ja Ettevõte). Kui identifikaator sisaldab tühikuid või erimärke (nt "Meiliaadress"), ümbritsege identifikaator nurksulgudega.

2. 2. FROM-klausel tuvastab lähtetabeli. Selles näites järgneb tehtemärgile (FROM) identifikaator (Kontaktid).

3. 3. WHERE-klausel on valikuline klausel. Näites järgneb tehtemärgile (WHERE) avaldis (Linn="Seattle").

Valikupäringute kohta leiate lisateavet teemast Lihtsa valikupäringu loomine.

Alljärgnev on loend tavalisematest SQL-klauslitest.

SQL-klausel Mida see 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

Iga SQL-klausel koosneb terminitest. Järgmisena tutvustame levinumate SQL-i terminite loendit.

SQL-i termin Definitsioon Näide
Identifikaator Nimi, mille abil tuvastatakse andmebaasiobjekt (nt veeru nimi). [Meiliaadress] ja Ettevõte
tehtemärk Võtmesõna, mis tähistab toimingut või muudab seda. AS
konstant Muutumatu väärtus (nt arv või väärtus NULL). 42
avaldis Identifikaatorite, tehtemärkide, konstantide ja funktsioonide kombinatsioon, mille tulemiks on üksikväärtus. >= Tooted. [Ühiku hind]

Lehe algusse

SELECT-klausli kohandamine

Kohanda Näide
Ainult erinevate väärtuste kuvamine
Kasutage SELECT-klauslis võtmesõna DISTINCT.
Näiteks kui teie kliendid on pärit mitmest erinevast harukontorist ja mõnel neist on sama telefoninumber ja soovite telefoninumbrit näha ainult üks kord, oleks teie SELECT-klausel järgmine:SELECT DISTINCT [txtCustomerPhone]
Identifikaatori andmelehevaates kuvamise viisi muutmine loetavuse parandamiseks
Kasutage oma SELECT-klausli välja pseudonüümi koos tehtemärgiga AS (võtmesõna, mis tähistab toimingut või muudab seda). Välja pseudonüüm on nimi, mille määrate väljale, et tulemeid oleks hõlpsam lugeda.
SELECT [txtCustPhone] AS [Klienditelefon]

FROM-klausli kohandamine

Kohandamise eesmärk Näide
Saate kasutada tabeli pseudonüümi või erinevat nime, mille olete SELECT-lauses tabelile määranud. Tabeli pseudonüüm on kasulik juhul, kui tabelinimi on pikk, eriti siis, kui teil on mitu erinevatest tabelitest pärit sama nimega välja. Andmete valimiseks kahelt väljalt (mõlema nimi on ID), millest üks on pärit tabelist tblKlient ja teine tabelist tblTellimus:
SELECT [tblCustomer]. [ID],
[tblOrder]. [ID]
FROM-klauslis tabelipseudonüümide määratlemiseks kasutage tehtemärki AS:
FROM [tblCustomer] AS [C],
[tblOrder] AS [O]
Seejärel saate neid tabelipseudonüüme kasutada SELECT-klauslis järgmiselt:SELECT [C]. [ID],
[O]. [ID]
Ühendamiste abil saate kahest andmeallikast pärinevad kirjepaarid ühendada üheks tulemiks või määrata, kas kaasata kummagi tabeli kirjed, kui seotud tabelis pole vastavat kirjet.
Ühendage tabelid nii, et päring kombineeriks tabelite üksused ja välistaks üksused, kui teises tabelis pole vastavat kirjet
FROM-klausel võib välja näha selline:FROM [tblCustomer]
INNER JOIN [tblOrder]
SEES [tblCustomer]. [CustomerID]=[tblOrder]. [Kliendi ID]

Ühenduste kasutamine

Ühendusi on kahte tüüpi: sisemised ja välised ühendused. Sisemised ühendused on päringutes rohkem levinud. Sisemise ühendusega päringu käivitamisel kuvatakse tulemis ainult need üksused, millel on mõlemas ühendatud tabelis ühine väärtus.

Välised ühendused määravad selle, kas kaasata andmed, millel puuduvad ühised väärtused. Välised ühendused on suunatud, mis tähendab, et saate määrata, kas kaasata kõik ühenduses määratud esimese tabeli kirjed (vasakpoolne ühendus) või ühenduse teise tabeli kirjed (parempoolne ühendus). Välises ühendamises on järgmine SQL-süntaks:

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2

Lisateavet ühenduste kasutamise kohta päringus leiate teemast Tabelite ja päringute ühendamine.

Lehe algusse

WHERE-klausli kohandamine

WHERE-klausel sisaldab kriteeriume, mille abil saate piiritleda päringu tagastatavate üksuste arvu. Tutvuge päringukriteeriumide näidete ja nende toimimisega.

Näide WHERE-põhiklausli kohandamisest on päringu tulemite piiramine. Oletagem, et soovite leida kliendi telefoninumbri ja mäletate tema perekonnanime üksnes Baglina. Selles näites talletatakse perekonnanimed väljal Perekonnanimi, seega oleks SQL-süntaks järgmine:

WHERE [LastName]='Bagel'

WHERE-klauslit saate kasutada ka selliste veergude andmeallikate kombineerimiseks, mis sisaldavad kattuvaid andmeid, kuid erinevaid andmetüüpe. See on kasulik, kuna eri andmetüüpidega väljade vahel ei saa ühendusi luua. Kasutage üht välja teise välja kriteeriumina koos võtmesõnaga LIKE . Näiteks kui soovite kasutada andmeid tabelitest Varad ja Töötajad, siis ainult siis, kui tabeli Varad väljal Varad oleva vara liigi arv on 3 tabeli Töötajad väljal Kogus, näeb WHERE-klausel välja järgmine:

WHERE field1 LIKE field2

NB!

WHERE-klauslis ei saa määrata kriteeriume sellise välja jaoks, mida kasutatakse kokkuvõttefunktsiooniga. Kasutage selle asemel HAVING-klauslit, et määrata kokkuvõtteväljade kriteeriumid.

Lehe algusse

Kohandamine ühendimärgi abil

Kasutage ühendimärki siis, kui soovite näha mitme sarnase valikupäringu ühendatud tulemivaadet. Näiteks kui teie andmebaasis on tabel Tooted ja tabel Teenused ja neis mõlemas on kolm välja: eripakkumine, toode või teenus, hind, garantii või tagatis. Kuigi tabelis Tooted talletatakse garantiiteavet ja tabelis Teenused tagatiseteavet, on põhiteave sama. Saate ühispäringu abil ühendada kahe tabeli kolm välja järgmiselt:

SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer 
FROM Services;

Päringu käivitamisel ühendatakse iga vastava väljakomplekti andmed üheks väljundiväljaks. Tulemitesse duplikaatridade kaasamiseks kasutage tehtemärki ALL.

Märkus.

SELECT-lauses peab olema sama arv väljundivälju, need peavad olema samas järjestuses ja sama või ühilduva andmetüübiga. Ühispäringu puhul on ühilduvad andmetüübid Number ja Tekst.

Ühispäringute kohta leiate lisateavet teemast Mitme päringu ühistulemi kuvamine ühispäringu abil.

Lehe algusse