Editarea instrucțiunilor SQL pentru a îmbunătăți rezultatele interogării

Se aplică la
Access pentru Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Dacă interogările dvs. nu funcționează suficient, adăugarea unor instrucțiuni SQL de bază vă poate ajuta să vă concentrați rezultatele. Să vedem câteva tipuri de instrucțiuni SQL și clauzele sau părțile pe care le puteți edita pentru a obține rezultatele dorite.

În acest articol

Crearea unei instrucțiuni Select

O instrucțiune SQL select are două-trei clauze. Clauza SELECT spune bazei de date unde să caute date și îi solicită să returneze un rezultat specific.

Notă

Instrucțiunile SELECT se termină întotdeauna prin punct și virgulă (;) fie la sfârșitul ultimei clauze, fie separat pe o linie la sfârșitul instrucțiunii SQL.

Următoarea instrucțiune select solicită ca Access să obțină informații din coloanele Adresă de poștă electronică și Firmă, din tabelul Persoane de contact, în special locul unde găsește "Sibiu" în coloana Localitate.

Fila obiect SQL afișând o instrucțiune SELECT

Interogarea de mai sus are trei clauze: SELECT, FROM și WHERE.

1. Clauza SELECT listează coloanele care conțin datele pe care doriți să le utilizați și are un operator (SELECT) urmat de doi identificatori (Adresă de poștă electronică și Firmă). Dacă un identificator are spații sau caractere speciale (cum ar fi "Adresă de poștă electronică"), încadrați identificatorul între paranteze drepte.

2. Clauza FROM identifică tabelul sursă. În acest exemplu, are un operator (FROM) urmat de un identificator (Contacte).

3. Clauza WHERE este o clauză opțională. Exemplul are un operator (WHERE) urmat de o expresie (Localitate="Sibiu").

Pentru mai multe informații despre interogările de selectare, consultați crearea unei interogări de selectare simple.

Iată o listă de clauze SQL comune:

Clauză SQL Ce face Obligatoriu?
SELECT Listează câmpurile care conțin date de interes. Da
FROM Listează tabelele care conțin câmpurile listate în clauza SELECT. Da
WHERE Specifică criteriile de câmp ce trebuie îndeplinite de fiecare înregistrare pentru ca aceasta să fie inclusă în rezultate. Nu
ORDER BY Specifică modalitatea de sortare a rezultatelor. Nu
GROUP BY Într-o instrucțiune SQL care conține funcții agregate, listează câmpurile care nu sunt rezumate în clauza SELECT. Doar dacă există astfel de câmpuri
HAVING Într-o instrucțiune SQL care conține funcții agregate, specifică ce condiții se aplică la câmpurile care sunt rezumate în instrucțiunea SELECT. Nu

Fiecare clauză SQL este alcătuită din termeni. Iată o listă cu câțiva termeni SQL comuni.

Termen SQL Definiție Exemplu
identificator Un nume pe care îl utilizați pentru a identifica un obiect din baza de date, cum ar fi numele coloanei. [Adresa de e-mail] și Firmă
operator Un cuvânt cheie care reprezintă o acțiune sau care modifică o acțiune. AS
constantă O valoare care nu se modifică, precum un număr sau o valoare NULL. 42
expresie O combinație de identificatori, operatori, constante și funcții care se evaluează la o singură valoare. >= Produse. [Preț unitar]

Începutul paginii

Particularizarea clauzei SELECT

Particularizare Exemplu
Pentru a vedea numai valorile distincte.
Utilizați cuvântul cheie DISTINCT în clauza SELECT.
De exemplu, dacă clienții dvs. provin din mai multe filiale și unii au același număr de telefon și doriți să vedeți un număr de telefon listat o singură dată, clauza SELECT ar fi astfel:SELECT DISTINCT [txtCustomerPhone]
Pentru a modifica modul în care apare un identificator în vizualizarea foaie de date pentru a îmbunătăți lizibilitatea.
Utilizați operatorul AS (un cuvânt cheie care reprezintă o acțiune sau care modifică o acțiune) cu un alias de câmp în clauza SELECT. Un alias de câmp este un nume pe care îl asociați unui câmp pentru ca rezultatele să fie mai simplu de citit.
SELECT [txtCustPhone] AS [Telefon client]

Particularizarea clauzei FROM

Particularizare Exemplu
Puteți utiliza un alias de tabel sau un alt nume pe care îl atribuiți unui tabel într-o instrucțiune select. Un alias de tabel este util dacă numele numelui tabelului este lung, mai ales când aveți în tabele diferite mai multe câmpuri care au același nume. Pentru a selecta date din două câmpuri, ambele denumite ID, dintre care unul provine din tabelul tblClienți și altul din tabelul tblComandă:
SELECT [tblClient]. [ID],
[tblOrder]. [ID]
Utilizați operatorul AS pentru a defini aliasurile de tabel în clauza FROM:
FROM [tblCustomer] AS [C],
[tblOrder] AS [O]
Apoi puteți utiliza aceste aliasuri de tabel în clauza SELECT, după cum urmează:SELECT [C]. [ID],
[O]. [ID]
Utilizați asocieri pentru a combina perechi de înregistrări din două surse de date într-un singur rezultat sau pentru a specifica dacă să includeți înregistrări din tabel dacă nu există nicio înregistrare provenită din tabelul asociat.
Asociați tabelele astfel încât interogarea să combine elementele din tabele și să excludă elementele atunci când nu există nicio înregistrare corespondentă în celălalt tabel
Iată cum poate arăta clauza FROM:FROM [tblCustomer]
INNER JOIN [tblOrder]
ACTIVAT [tblClient]. [IDClient]=[tblComenzi]. [IDClient]

Despre utilizarea asocierilor

Există două tipuri de asocieri, interne și externe. Asocierile interne sunt mai comune în interogări. Când rulați o interogare cu o asociere internă, rezultatul afișează doar acele elemente pentru care există o valoare comună în ambele tabele asociate.

Asocierile externe specifică dacă să se includă date atunci când nu există o valoare comună. Asocierile externe sunt direcționale, însemnând că puteți specifica dacă să includeți toate înregistrările din primul tabel specificat în asociere (denumită asociere la stânga) sau să le includeți pe toate cele din al doilea tabel din asociere (denumită asociere la dreapta). O asociere externă are următoarea sintaxă SQL:

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

Vedeți mai multe informații despre utilizarea asocierilor într-o interogare în Asocierea tabelelor și interogărilor.

Începutul paginii

Particularizarea clauzei WHERE

Clauza WHERE include criterii care vă ajută să limitați numărul de elemente returnate într-o interogare. Vedeți exemple de criterii de interogare și vă arată cum funcționează.

Un exemplu despre cum puteți particulariza clauza WHERE de bază este să limitați rezultatele unei interogări; Să presupunem că doriți să găsiți numărul de telefon al unui client și puteți să vă amintiți doar numele său de familie ca Bagel. În acest exemplu, numele de familie sunt stocate într-un câmp Nume de familie, așa că sintaxa SQL va fi:

WHERE [LastName]='Bagel'

Utilizați clauza WHERE și pentru a combina surse de date pentru coloane care au date potrivite, dar tipuri diferite de date. Acest lucru este util deoarece nu puteți crea o asociere între câmpurile cu tipuri de date diferite. Utilizați un câmp drept criteriu pentru celălalt câmp, cu cuvântul cheie LIKE . De exemplu, dacă doriți să utilizați date dintr-un tabel Active și din tabelul Angajați doar atunci când tipul de mijloc fix din câmpul tip de mijloc al tabelului Active are numărul 3 în câmpul Cantitate din tabelul Angajați, iată cum ar arăta clauza WHERE:

WHERE field1 LIKE field2

Important

Nu este posibil să specificați criterii pentru un câmp utilizat cu o funcție agregată într-o clauză WHERE. În schimb, utilizați o clauză HAVING pentru a specifica criteriile pentru câmpurile agregate.

Începutul paginii

Personalizarea cu operatorul UNION

Utilizați operatorul UNION atunci când doriți să vedeți o vizualizare combinată a rezultatelor mai multor interogări de selectare asemănătoare. De exemplu, dacă baza dvs. de date are un tabel Produse și un tabel Servicii și ambele au trei câmpuri: ofertă exclusivă sau produs sau serviciu, preț, garanție sau garanție. Chiar dacă tabelul Produse stochează informații despre garanție și tabelul Servicii stochează informații despre perioada de garanție, informațiile de bază sunt aceleași. Puteți utiliza o interogare de uniune pentru a combina cele trei câmpuri din cele două tabele, astfel:

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

Când executați interogarea, datele din fiecare set de câmpuri corespunzătoare sunt combinate într-un singur câmp de ieșire. Pentru a include orice rânduri dublate în rezultate, utilizați operatorul ALL.

Notă

Instrucțiunea Select trebuie să aibă același număr de câmpuri de ieșire, în aceeași ordine și cu aceleași tipuri de date sau cu tipuri de date compatibile. În scopul efectuării unei interogări de uniune, tipurile de date Număr și Text sunt compatibile.

Pentru mai multe informații despre interogările de uniune, consultați utilizarea unei interogări de uniune pentru a vizualiza un rezultat unificat din mai multe interogări.

Începutul paginii