Documente Academic
Documente Profesional
Documente Cultură
WHERE
O instruciune SQL are forma general:
SELECT cmp_1
FROM tabel_1
WHERE criteriu_1
;
NOTE
Access ignor sfriturile de linie ntr-o instruciune SQL. Totui, luai n calcul utilizarea unei
linii separate pentru fiecare clauz, pentru a contribui la mbuntirea lizibilitii instruciunilor SQL
pentru dvs. i pentru alte persoane.
Fiecare instruciune SELECT se termin prin punct i virgul (;). Semnul punct i virgul
poate aprea la sfritul ultimei clauze sau separat pe o linie la sfritul instruciunii SQL.
1. Clauza SELECT
2. Clauza FROM
3. Clauza WHERE
Acest exemplu de instruciune SQL semnific Selectai datele stocate n cmpuri denumite Adres de po t electronic i
Firm din tabelul denumit Persoane de contact, mai precis nregistrrile n care valoarea cmpului Localitate este Sibiu.
S privim exemplul, cte o clauz o dat, pentru a vedea cum funcioneaz sintaxa SQL.
Clauza SELECT
SELECT [Adres de pot electronic], Firm
Aceasta este clauza SELECT. Ea cuprinde un operator (SELECT) urmat de doi identificatori ([Adres de po t electronic]
i Firm).
Dac un identificator conine spaii sau caractere speciale (cum ar fi Adres de po t electronic), trebuie cuprins ntre
paranteze drepte.
O clauz SELECT nu trebuie s menioneze ce tabele conin cmpurile i nu poate specifica nicio condi ie pe care s o
ndeplineasc datele de inclus.
Clauza SELECT apare ntotdeauna n faa clauzei FROM ntr-o instruciune SELECT.
Clauza FROM
FROM Contacte
Aceasta este clauza FROM. Aceasta cuprinde un operator (FROM) urmat de un identificator (Contacte).
O clauz FROM nu listeaz cmpurile care s fie selectate.
Clauza WHERE
WHERE Localitate="Sibiu"
Aceasta este clauza WHERE. Ea cuprinde un operator (WHERE) urmat de o expresie (Localitate="Sibiu").
NOT Spre deosebire de clauzele SELECT i FROM, clauza WHERE nu este un element obligatoriu al unei instruc iuni
SELECT.
dar poate ajunge s mreasc timpul la scrierea instruciunilor SQL. Trebuie s ave i n vedere acest lucru cnd denumi i
obiecte din baza de date.
Dac instruciunea SQL are dou sau mai multe cmpuri cu acelai nume, trebuie s aduga i numele sursei de date a
fiecrui cmp la numele de cmp din clauza SELECT. Utilizai acelai nume pentru sursa de date pe care l utiliza i i n
clauza FROM.
Uneori, dorii s privii calculele pe baza datelor dvs. sau s regsii doar o parte a datelor cmpului. De exemplu, s
presupunem c dorii s returnai anul n care s-au nscut clienii, pe baza datelor din cmpul DatNatere din baza de date.
Clauza SELECT poate arta astfel:
SELECT DatePart("yyyy",[DatNatere]) AS [Anul naterii]
Aceast expresie cuprinde funcia DatePart i dou argumente - yyyy (o constant) i [DatNatere] (un identificator).
Avei posibilitatea s utilizai drept cmp orice expresie valid, dac expresia are ca rezultat o singur valoare atunci cnd
este dat o singur valoare de intrare.
nceputul paginii
dar poate ajunge s mreasc timpul la scrierea instruciunilor SQL. Trebuie s ave i n vedere acest lucru cnd denumi i
obiecte din baza de date.
Folosind aliasuri de tabel n clauza FROM, facei ca interogarea s devin mai simplu de tastat. Clauza FROM, cu aliasuri
de tabel, poate arta astfel:
FROM [tblClieni] AS [C], [tblComenzi] AS [O]
Apoi este posibil s utilizai aceste aliasuri de tabel n clauza SELECT, dup cum urmeaz:
SELECT [C].[ID], [O].[ID]
NOT Cnd utilizai un alias de tabel, avei posibilitatea s facei referire la sursa de date din instruc iunea SQL utiliznd
Asocieri interne
Asocierile interne sunt cel mai obinuit tip de asocieri. Cnd se execut o interogare cu o asociere intern, singurele
nregistrri incluse n rezultatele interogrii sunt cele n care exist o valoare comun n ambele tabele asociate.
O asociere intern are urmtoarea sintax (sfritul de linie este adugat aici pentru lizibilitate):
Descriere
tabel1,tabel2
cmp1,cmp2
Numele cmpurilor care se unesc. Dac nu sunt numerice, cmpurile trebuie s fie de acela i tip de date
i s conin acelai tip de date, dar nu trebuie neaprat s aib acelai nume.
operator de
comparaie
Orice operator de comparaie relativ: =, <, > <=, >= sau <>.
Asocierile externe
Asocierile externe se aseamn cu asocierile interne, deoarece spun unei interogri cum s combine informa iile din dou
surse. Ele sunt diferite, deoarece specific, de asemenea, dac s se includ date atunci cnd nu exist o valoare comun.
Asocierile externe sunt direcionale: este posibil s specificai dac s include i toate nregistrrile de la prima surs de date
specificat n asociere (denumit asociere la stnga) sau s le includei pe toate cele din a doua surs de date din asociere
(denumit asociere la dreapta).
O asociere extern are sintaxa urmtoare:
FROM tabel1 [ LEFT | RIGHT ] JOIN tabel2
ON tabel1.cmp1operator de comparaie tabel2.cmp2
Tabelul urmtor descrie prile operaiilor LEFT JOIN i RIGHT JOIN.
Parte
Descriere
tabel1,tabel2
cmp1,cmp2
Numele cmpurilor care se unesc. Cmpurile trebuie s fie de acelai tip de date i s conin acelea i
tipuri de date, dar nu trebuie neaprat s aib acelai nume.
operator de
comparaie
Orice operator de comparaie relativ: "=," "<," ">," "<=," ">=," sau "<>."
Pentru mai multe informaii despre asocieri, consultai articolul Asocierea tabelelor i a interogrilor.
nceputul paginii
Urmtorul tabel afieaz cteva exemple de criterii i explic modul n care func ioneaz.
Criterii
Descriere
Criteriul se aplic unui cmp de tip Numr, cum ar fi Pre sau UnitinStoc. Se vor include
numai acele nregistrri unde cmpurile conin o valoare mai mare dect 25 i mai mic dect
50.
DateDiff ("yyyy",
[DataNaterii], Date()) >
30
Acest criteriu se aplic unui cmp Dat/Or, cum ar fi DataNaterii. Se includ n rezultatele
interogrii numai nregistrrile unde numrul de ani dintre data de na tere a persoanei i data
de azi este mai mare de 30.
Is Null
Acest criteriu poate fi aplicat oricrui tip de cmp pentru a afia nregistrrile unde valoarea
cmpului este nul.
Aa cum arat i tabelul anterior, criteriile pot fi diferite, n funcie de tipul de date al cmpului pentru care se aplic i de
cerinele dvs. Anumite criterii sunt simple i utilizeaz operatori i constante de baz. Altele sunt complexe i utilizeaz
funcii i operatori speciali i includ referine la cmpuri.
IMPORTANT Dac un cmp este utilizat cu o funcie agregat, nu este posibil s specifica i criterii pentru acel cmp ntr-o
clauz WHERE. n schimb, utilizai o clauz HAVING pentru a specifica criteriile pentru cmpurile agregate. Pentru mai
multe informaii, vedei seciunea Lucrul cu date rezumate: GROUP BY i HAVING.
operatori de comparaie, cum ar fi mai mare dect (>) sau mai mic dect (<). De exemplu, WHERE [Pre]>100.
Nu este posibil s creai o asociere ntre cmpurile cu tipuri de date diferite. Pentru a combina date din dou surse de date pe
baza valorilor din cmpurile care au tipuri de date diferite, creai o clauz WHERE care utilizeaz un cmp drept criteriu
pentru cellalt cmp, utiliznd cuvntul cheie LIKE.
De exemplu, s presupunem c dorii s utilizai datele din tabel1 i tabel2, dar doar atunci cnd datele din cmp1 (un cmp
text din tabel1) se potrivesc cu datele din cmp2 (un cmp numeric din tabel2). Clauza WHERE ar arta astfel:
WHERE cmp1 LIKE cmp2
n acest articol
Prezentare general
Utilizarea Generatorului de expresii pentru a introduce criterii
Prezentare general
Un criteriu este asemntor cu o formul, fiind un ir care poate fi format din referin e de cmp, operator i constant.
Criteriile de interogare se mai numesc i expresii.
Videoclipul urmtor arat cum se utilizeaz criteriile pentru un cmp text.
Urmtorul tabel afieaz cteva exemple de criterii i explic modul n care func ioneaz.
Criteriu
Descriere
Criteriul se aplic unui cmp de tip Numr, cum ar fi Pre sau UnitinStoc. Se vor include
numai acele nregistrri unde cmpurile Pre sau UnitinStoc conin o valoare mai mare
dect 25 i mai mic dect 50.
DateDiff ("yyyy",
[DataNaterii], Date()) >
30
Acest criteriu se aplic unui cmp Dat/Or, cum ar fi DataNaterii. Se includ n rezultatele
interogrii numai nregistrrile unde numrul de ani dintre data de natere a persoanei i
data de azi este mai mare de 30.
Is Null
Acest criteriu se poate aplica oricrui tip de cmp pentru a afia nregistrrile unde valoarea
cmpului este nul.
Criteriile pot arta destul de diferit ntre ele. Unele criterii sunt simple i utilizeaz operatori de baz (cum ar fi <) i
constante (cum ar fi 50). Altele sunt complexe i utilizeaz funcii (cum ar fi DateDiff) sau referin e la cmp (cum ar fi
[DataNaterii]). Acest subiect furnizeaz mai multe exemple de criterii utilizate de obicei, grupate dup tipul de date la
care se aplic. Este posibil s utilizai exemplele date n acest subiect ca punct de pornire pentru a v scrie propriile criterii.
Pentru a aduga criterii la o interogare, trebuie s deschidei interogarea n vizualizarea Proiectare. Apoi, identifica i
cmpurile pentru care dorii s specificai criterii. n cazul n care un cmp pentru care dori i s specifica i un criteriu nu se
afl deja n grila de proiectare, l adugai glisndu-l din fereastra de proiectare a interogrii n grila de proiect sau fcnd
dublu clic pe cmp. n cazul n care cmpul pe care l dorii este n grila de proiect, introduce i criteriile n
rndul Criterii pentru acel cmp.
n cazul n care criteriile sunt temporare sau se modific des, ave i posibilitatea s filtra i rezultatul interogrii n loc
de a modifica frecvent criteriile de interogare. Un filtru modific rezultatul interogrii fr a modifica proiectul interogrii.
Pentru mai multe informaii despre filtre, consultai seciunea Consultai i.
n cazul n care cmpurile de criterii nu se modific, dar valorile pe care dorii s le utiliza i se modific frecvent,
avei posibilitatea s creai o interogare cu parametri. O interogare cu parametri v solicit o intrare atunci cnd rula i
interogarea, apoi utilizeaz respectiva intrare pentru a crea criteriile de interogare. Pentru mai multe informa ii despre cum se
creeaz o interogare care cere o intrare, consultai seciunea Consultai i.
nceputul paginii
Pentru a include
nregistrri care...
Rezultat interogare
Se potrivesc exact cu
o valoare, cum ar fi
China
"China"
Nu se potrivesc cu o
valoare, cum ar fi
Mexic
Not "Mexico"
ncep cu irul
specificat, cum ar fi
S
Like S*
Not Like S*
Conine irul
specificat, cum ar fi
Coreea
Like "*Coreea*"
Nu conine irul
specificat, cum ar fi
Coreea
Pentru a include
nregistrri care...
Rezultat interogare
Se termin cu irul
specificat, cum ar fi
ina
Like "*ina"
Nu se termin cu
irul specificat, cum
ar fi ina
Is Null
Nu conine valori
nule
Is Not Null
Conine iruri de
lungime zero
"" (o pereche de
ghilimele)
Nu conine iruri de
lungime zero
Not ""
"" Or Is Null
>= "Mexico"
Se ncadreaz ntr-un
anumit interval, cum
ar fi de la A la D
Like "[A-D]*"
Se potrivesc cu una
din dou valori, cum
ar fi SUA sau
Canada
"SUA" Or "Canada"
Pentru a include
nregistrri care...
Rezultat interogare
In("Frana", "China",
"Germania", "Japonia")
Conin anumite
caractere ntr-o
anumit poziie n
valorile cmpului
Right([arRegiune], 1)
= "a"
Satisfac cerine de
lungime
Len([arRegiune]) >
10
Se potrivesc unui
anumit model
Like "Chi??"
HyperlinkPart([Tabel1].[Cmp1],1) =
"http://www.microsoft.com/"
Tabel1 reprezint numele tabelului care conine cmpul hyperlink, Cmp1 este cmpul hyperlink i
http://www.microsoft.com este adresa URL pe care dorii s o potrivii.
nceputul paginii
Pentru a include
nregistrri care...
Utilizai
acest
criteriu
Rezultat interogare
Se potrivesc exact
cu o valoare, cum
ar fi 100
100
Nu se potrivesc cu
o valoare, cum ar fi
1000
Not 1000
Conin o valoare
mai mic dect
acea valoare, cum
ar fi 100
< 100
<= 100
Returneaz nregistrrile unde preul unitar este mai mic de 100 lei (<100). A doua
expresie (<=100) afieaz nregistrrile unde preul unitar este mai mic sau egal dect
100 lei.
Conin o valoare
mai mare dect o
valoare cum ar fi
99,99
>99,99
>=99,99
Returneaz nregistrrile unde preul unitar este mai mare dect 99,99 lei (>99,99). A
doua expresie afieaz nregistrrile unde preul unitar este mai mare sau egal cu 99,99
lei.
20 or 25
Returneaz nregistrrile unde unde preul unitar este 20 lei sau 25 lei.
Pentru a include
nregistrri care...
Utilizai
acest
criteriu
Rezultat interogare
Conin o valoare
care se ncadreaz
ntr-un interval de
valori
>49,99 i
<99,99
-sauBetween
50 and 100
Returneaz nregistrrile unde preul unitar este ntre (dar nu inclusiv) 49,99 i 99,99 lei.
Conin o valoare
care este n afara
unui interval
<50 or
>100
In(20, 25,
30)
Conin o valoare
care se termin cu
cifrele specificate
Like
"*4,99"
Returneaz nregistrrile unde preul unitar se termin n 4,99, cum ar fi 4,99 lei, 14,99
lei, 24,99 lei etc.
NOT Caracterele * i %, atunci cnd sunt utilizate ntr-o expresie, reprezint orice
Is Null
Returneaz nregistrrile unde nu este introdus nicio valoare n cmpul Pre Unitar.
Conin valori
nenule
Is Not
Null
nceputul paginii
Pentru a include
nregistrri care...
Rezultat interogare
Se potrivesc exact
cu o valoare, cum
ar fi 02.02.2006
#02.02.2006#
Nu se potrivesc cu
o valoare, cum ar fi
02.02.2006
Not #02.02.2006#
< #02.02.2006#
> #02.02.2006#
Pentru a include
nregistrri care...
o anumit dat,
cum ar fi
02.02.2006
Rezultat interogare
<#02.02.2006# or >#04.02.2006#
#02.02.2006# or #03.02.2006#
DatePart("m", [DateVnzri]) = 12
DatePart("q", [DateVnzri]) = 1
Pentru a include
nregistrri care...
Rezultat interogare
Conin data de
astzi
Date()
Date()-1
Conin data de
mine
Date() + 1
Year([DatVnzri])* 53 + DatePart("ww",
[DatVnzri]) = Year(Date())* 53 + DatePart("ww",
Date()) - 1
nti
Pentru a include
nregistrri care...
Rezultat interogare
curente
Month([DatVnzri]) = Month(Now())
Year([DatVnzri])*4+DatePart("q",[DatVnzri]) =
Year(Date())*4+DatePart("q",Date())- 1
Year([DatVnzri])*4+DatePart("q",[DatVnzri]) =
Year(Date())*4+DatePart("q",Date())+1
Year([DatVnzri]) = Year(Date())
Year([DatVnzri]) = Year(Date()) - 1
Pentru a include
nregistrri care...
Rezultat interogare
Year([DatVnzri]) = Year(Date()) + 1
< Date()
> Date()
Filtreaz pentru
valori nule (sau
care lipsesc)
Is Null
Filtreaz pentru
valori nenule
Is Not Null
Videoclipul urmtor are mai multe informaii despre utilizarea expresiilor legate de dat:
nceputul paginii
Da/Nu
n rndul Criterii, tastai Da pentru a include nregistrrile unde este bifat caseta de selectare. Tasta i Nu
pentru a include nregistrrile unde caseta de selectare nu este bifat.
Ataare
n rndul Criterii, tastai Is Null pentru a include nregistrrile care nu conin ata ri. Tasta i Is Not Null
pentru a include nregistrrile care conin atari.
Cutare
Exist dou tipuri de baz de cmpuri de cutare: cmpurile de cutare care caut valori ntr-o surs de date
existent (utiliznd o cheie extern) i cele care se bazeaz pe o list de valori specificat atunci cnd se
creeaz cmpul de cutare.
Tip de cmp
Multivalori
c
Datele dintr-un cmp multivaloric se stocheaz ca rnduri ntr-un tabel ascuns, pe care Office Access 2007 l
creeaz i l populeaz pentru a reprezenta cmpul. n vizualizarea Proiectare, acesta se reprezint n List de
cmpuri utiliznd un cmp extensibil. Pentru a utiliza criteriile pentru un cmp multivaloric, oferi i criteriile
pentru un singur rnd al tabelului ascuns. Pentru a face aceasta:
Creai o interogare care conine cmpul multi-valoare, apoi deschidei-o n vizualizarea Proiect.
Extindei cmpul multivaloric fcnd clic pe simbolul plus (+) de lng el - n cazul n care cmpul
este deja extins, apare simbolul minus(-). Chiar sub numele cmpului, vei vedea un cmp care reprezint o
singur valoare a cmpului multivaloric. Acest cmp va avea acelai nume cu cmpul multivaloric, cu irul
.Value adugat.
Glisai cmpul multi-valoare i cmpul su cu o singur valoare pentru a separa coloanele n grila de
proiectare. Dac dorii s vedei numai cmpul multi-valoare complet n rezultatele dvs., debifa i caseta de
selectare Afiare pentru cmpul cu o singur valoare.
Tastai criteriile n rndul Criterii pentru cmpul cu o singur valoare, utiliznd criteriile care se
potrivesc tipului de date pe care le reprezint valorile.
Fiecare valoare din cmpul multivaloric va fi evaluat individual utiliznd criteriile pe care le oferi i. De
exemplu, s presupunem c avei un cmp multivaloric ce stocheaz o list de numere. Dac furniza i
criteriile >5 AND <3, orice nregistrare unde exist cel puin o valoare mai mare dect 5 io valoare mai mic
dect 3 se va potrivi.