Redaguokite SQL sakinius, kad patikslintumėte užklausos rezultatus

Taikoma
„Access“, skirta „Microsoft 365“ „Access 2024“ Access 2021 Access 2019 Access 2016

Jei jūsų užklausos nepakankamai aktyvios, įtraukdami kelis pagrindinius SQL sakinius galite gauti rezultatyvesnius rezultatus. Pažvelkime į kelių tipų SQL sakinius ir sąlygas arba dalis, kurias galite redaguoti, kad gautumėte norimus rezultatus.

Šiame straipsnyje:

Sakinio Select kūrimas

SQL SELECT sakinys turi dvi arba tris sąlygas. Sąlyga SELECT nurodo duomenų bazei, kur ieškoti duomenų, ir prašo pateikti konkretų rezultatą.

Pastaba

SELECT sakiniai visada baigiasi kabliataškiu (;) paskutinės sąlygos pabaigoje arba viena eilutėje, SQL sakinio pabaigoje.

Šis select sakinys prašo "Access" gauti informaciją iš stulpelių El. pašto adresas ir Įmonė, iš lentelės Kontaktai, konkrečiai ten, kur stulpelyje Miestas yra žodis "Sietlas".

SQL objekto skirtukas su sakiniu SELECT

Anksčiau pateiktoje užklausoje yra trys sąlygos: SELECT, FROM ir WHERE.

1. Sąlyga SELECT išvardija stulpelius, kuriuose yra norimi naudoti duomenys, ir nurodo operatorių (SELECT) ir du identifikatorius (El. pašto adresas ir Įmonė). Jei identifikatoriuje yra tarpų arba specialiųjų simbolių (pvz., "El. pašto adresas"), identifikatorių rašykite laužtiniuose skliaustuose.

2. Sąlyga FROM identifikuoja šaltinio lentelę. Šiame pavyzdyje yra operatorius (FROM) ir identifikatorius (Kontaktai).

3. Sąlyga WHERE yra pasirinktinė sąlyga. Pavyzdyje yra operatorius (WHERE) ir išraiška (Miestas="Siatlas").

Daugiau informacijos apie išrinkimo užklausas rasite paprastos išrinkimo užklausos kūrimas.

Čia pateikiamas dažniausiai naudojamų SQL sąlygų sąrašas:

SQL sąlyga Atliekami veiksmai Būtina?
SELECT Išvardija laukus, kuriuose yra dominančių duomenų. Taip
FROM Išvardija lenteles, kuriose yra laukai, nurodyti sąlygoje SELECT. Taip
WHERE Nurodo lauko kriterijus, kuriuos kiekvienas įrašas turi atitikti, kad būtų įtrauktas į rezultatus. Ne
ORDER BY Nurodo, kaip rūšiuoti rezultatus. Ne
GROUP BY SQL sakinyje, kuriame yra sudėtinių funkcijų, išvardija laukus, kurie nėra apibendrinti sąlygoje SELECT. Tik jei yra tokių laukų
HAVING SQL sakinyje, kuriame yra sudėtinių funkcijų, nurodo sąlygas, taikomas laukams, apibendrintiems sakinyje SELECT. Ne

Kiekvieną SQL sąlygą sudaro terminai. Čia pateikiamas kai kurių dažniausiai naudojamų SQL terminų sąrašas.

SQL terminas Apibrėžimas Pavyzdys
identifikatorius Pavadinimas, kurį naudojate duomenų bazės objektui identifikuoti, pvz., stulpelio pavadinimas. [El. pašto adresas] ir įmonė
operatorius Raktinis žodis, vaizduojantis veiksmą arba keičiantis veiksmą. KAIP
konstanta Nekintanti vertė, pvz., skaičius arba NULL. 42
išraiška Identifikatorių, operatorių, konstantų ir funkcijų derinys, kuris apskaičiuoja vieną vertę. >= Produktai. [Vieneto kaina]

Puslapio viršus

Sąlygos SELECT tinkinimas

Tinkinimas Pavyzdys
Matyti tik skirtingas reikšmes.
Naudokite raktažodį DISTINCT sąlygoje SELECT.
Pavyzdžiui, jei jūsų klientai yra iš kelių skirtingų filialų ir kai kurie turi tą patį telefono numerį, o jūs norite matyti telefono numerį tik vieną kartą, sąlyga SELECT turėtų būti tokia:SELECT DISTINCT [txtCustomerPhone]
Pakeisti identifikatoriaus rodymo duomenų lapo rodinyje būdą, kad būtų lengviau skaityti.
Naudokite operatorių AS (raktažodis, vaizduojantis veiksmą arba keičiantis veiksmą) su lauko pseudonimu sąlygoje SELECT. Lauko pseudonimas yra pavadinimas, kurį priskiriate laukui, kad rezultatus būtų lengviau skaityti.
SELECT [txtCustPhone] AS [Kliento telefonas]

Sąlygos FROM tinkinimas

Tinkinimas Pavyzdys
Galite naudoti lentelės pseudonimą arba kitą pavadinimą, kurį priskiriate lentelei sakinyje select. Lentelės pseudonimas yra naudingas, jei lentelės pavadinimas ilgas, ypač jei turite kelis laukus, kuriuose yra tas pats pavadinimas iš skirtingų lentelių. Norėdami pasirinkti duomenis iš dviejų laukų, kurie abu pavadinti "ID" ir kurių vienas yra gautas iš lentelės "tblCustomer", o kitas – iš lentelės "tblOrder":
SELECT [tblCustomer]. [ID],
[tblOrder]. [ID]
Naudokite operatorių AS, kad apibrėžtumėte lentelės pseudonimus sąlygoje FROM:
FROM [tblCustomer] AS [C],
[tblOrder] AS [O]
Tada savo sąlygoje SELECT galėsite naudoti šiuos lentelių pseudonimus:SELECT [C]. [ID],
[O]. [ID]
Sujungimus naudokite norėdami sujungti įrašų iš dviejų duomenų šaltinių poras į vieną rezultatą arba nurodyti, ar įtraukti įrašus iš kurios nors lentelės, jei susijusioje lentelėje nėra atitinkamo įrašo, naudokite sujungimus.
Sujunkite lenteles taip, kad užklausa sujungtų lentelių elementus ir neįtrauktų elementų, jei kitoje lentelėje nėra atitinkamo įrašo
Štai kaip gali atrodyti sąlyga FROM:FROM [tblCustomer]
INNER JOIN [tblOrder]
ON [tblCustomer]. [CustomerID]=[tblOrder]. [Kliento ID]

Apie jungčių naudojimą

Yra dviejų tipų sujungimai, vidiniai ir išoriniai. Vidinės jungtys dažniau pasitaiko užklausose. Vykdant užklausą su vidiniu sujungimu, rezultatuose rodomi tik tie elementai, kurių bendra reikšmė yra abiejose sujungtose lentelėse.

Išoriniai sujungimai nurodo, ar norite įtraukti duomenis ten, kur nėra bendros reikšmės. Išoriniai sujungimai yra kryptiniai, t. y. galite nurodyti, ar įtraukti visus įrašus iš pirmosios lentelės, nurodytos sujungime (vadinamame kairiu sujungimu), ar įtraukti visus įrašus iš antrosios lentelės (vadinamo dešiniu sujungimu). Išorinio sujungimo SQL sintaksė yra tokia:

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

Daugiau informacijos apie sujungimų užklausoje naudojimą žr. Lentelių ir užklausų sujungimas.

Puslapio viršus

Sąlygos WHERE tinkinimas

Sąlyga WHERE apima kriterijus, kurie padeda apriboti užklausoje pateikiamų elementų skaičių. Peržiūrėkite užklausos kriterijų pavyzdžius ir kaip jie veikia.

Pavyzdys, kaip galite tinkinti pagrindinę sąlygą WHERE, kad apribotumėte užklausos rezultatus; Tarkime, kad norite rasti kliento telefono numerį, bet atsimenate tik jo pavardę kaip Bagelį. Šiame pavyzdyje pavardės saugomos lauke Pavardė, todėl SQL sintaksė būtų tokia:

WHERE [LastName]='Bagel'

Sąlygą WHERE taip pat naudokite norėdami sujungti stulpelių, kuriuose yra sutampančių duomenų, bet skiriasi duomenų tipai, duomenų šaltinius. Tai naudinga, nes negalite sukurti sąsajos tarp laukų, kurių duomenų tipai skirtingi. Naudokite vieną lauką kaip kriterijų kitam laukui su raktažodžiu LIKE . Pavyzdžiui, jei norite naudoti duomenis iš lentelių Turtas ir Darbuotojai, tik kai turto tipo lentelės Darbuotojai lauke Turto tipas yra skaičius 3, štai kaip atrodys sąlyga WHERE:

WHERE field1 LIKE field2

Svarbu

Negalite nurodyti kriterijų laukui, naudojamam su agregavimo funkcija sąlygoje WHERE. Vietoj to agreguotų laukų kriterijams nurodyti galite naudoti sąlygą HAVING.

Puslapio viršus

Tinkinimas naudojant operatorių UNION

Naudokite operatorių UNION, kai norite matyti kelių panašių pasirinkimo užklausų rezultatų jungtinį rodinį. Pvz., jei jūsų duomenų bazėje yra lentelės Produktai ir Paslaugos ir juose yra trys laukai: Išskirtinis pasiūlymas arba Produktas ar paslauga, Kaina, Garantija arba Garantija. Nors lentelėje "Produktai" saugoma garantijos informacija, o lentelėje "Paslaugos" saugoma garantinio laikotarpio informacija, pagrindinė informacija yra tokia pati. Norėdami sujungti tris laukus iš dviejų lentelių, galite naudoti sujungimo užklausą taip:

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

Kai vykdote užklausą, duomenys iš kiekvieno atitinkamų laukų rinkinio sujungiami į vieną išvesties lauką. Norėdami į rezultatus įtraukti bet kokias pasikartojančias eilutes, naudokite operatorių ALL.

Pastaba

Sakinyje Select turi būti tiek pat išvesties laukų, išdėstytų ta pačia tvarka ir su tokių pačių arba suderinamų tipų duomenimis. „Union“ užklausose skaičių ir teksto duomenų tipai yra suderinami.

Daugiau informacijos apie "union" užklausas žr. "Union" užklausos naudojimas norint peržiūrėti vieningą kelių užklausų rezultatą.

Puslapio viršus