Sunteți pe pagina 1din 2

LP 6

INTEROGRI SQL N MICROSOFT ACCES

a) Folosirea comenzii SELECT pentru extragerea de informaii din dou tabele ale
aceleiai baze de date, care sunt legate printr-o relaie:
Pentru aceast operaie este necesar s folosim comanda SELECT adugnd clauza JOIN,
dup cum urmeaz:
SELECT <list de cmpuri>
FROM <nume tabel1> INNER JOIN <nume tabel1>
ON <regula de coresponden>
WHERE <condiie>
ORDER BY <lista de campuri> [ASC /DESC]
n fapt, exist trei variante de combinare a nregistrrilor din dou tabele care sunt legate
printr-o relaie:

INNER JOIN: combin nregistrrile din cele dou tabele ori de cte ori acestea au aceeai
valoare n cmpul comun al celor dou tabele;

LEFT JOIN: folosete acelai principiu, doar c include toate nregistrrile din primul tabel,
chiar dac pentru unele dintre ele nu exist valori cu care s se potriveasc n cmpul comun
din al doilea tabel;

RIGHT JOIN: folosete acelai principiu, doar c include toate nregistrrile din al doilea tabel,
chiar dac pentru unele dintre ele nu exist valori cu care s se potriveasc n cmpul comun
din primul tabel.
Prin urmare, INNER JOIN este varianta adecvat de combinare a nregistrrilor dac cele
dou tabele sunt legate printr-o relaie de tip one-to-one, n timp ce LEFT JOIN i RIGHT JOIN
sunt variantele adecvate de combinare a nregistrrilor dac cele dou tabele sunt legate printr-o
relaie de tip one-to-many; de obicei este de preferat combinarea nregistrrilor prin LEFT JOIN
celei prin RIGHT JOIN, pentru a nu se pierde nregistrrile din tabelul primar pentru care nu exist
corespondene n tabelul legat, dar exist i situaii speciale n care varianta RIGHT JOIN este mai
potrivit n funcie de modul de proiectare a tabelelor i de obiectivele concrete pe care le
urmrim la unificarea lor.
<Regula de coresponden>indic numele cmpului comun al celor dou tabele, n care
se vor cuta valorile identice dup care s se fac potrivirea nregistrrilor.
Deoarece n aceast situaie comanda SELECT folosete cmpuri din dou tabele diferite
ale unei baze de date, pentru a nu avea erori este esenial s utilizm numele complete ale
cmpurilor cu care se lucreaz, preciznd i tabelul din care provin acestea. n rest, celelalte clauze
ale comenzii SELECT se pot folosi la fel ca n exemplele anterioare.
Exemplu: Avem tabelele PACIENTI i MED_PERMANENTE, legate printro relaie de tip one-to-one.
Dorim s afim numele, vrsta, nlimea i greutatea persoanelor cu grupa de snge B;
interogarea va avea sintaxa:
SELECT PACIENTI.[NUME, PRENUME], PACIENTI.VARSTA, MED_PERMANENTE.INALTIME,
MED_PERMANENTE.GREUTATE
FROM PACIENTI INNER JOIN MED_PERMANENTE
ON PACIENTI.ID = MED_PERMANENTE.ID
WHERE MED_PERMANENTE.[GRUPA DE SANGE] =B
Avem tabelele PACIENTI i EXAMEN_FIZIC, legate printr-o relaie de tip one-to-many. Dorim
s afim numele, vrsta, i temperatura persoanelor cu cefalee; interogarea va avea sintaxa:
SELECT PACIENTI.[NUME, PRENUME], PACIENTI.VARSTA, EXAMEN_FIZIC.TEMPERATURA
FROM PACIENTI LEFT JOIN EXAMEN_FIZIC
ON PACIENTI.ID = EXAMEN_FIZIC.ID
WHERE EXAMEN_FIZIC.CEFALEE = YES

Interogri SQL n Microsoft Acces|1

EXERCIII:
1. Afiai nume, vrsta i sexul pacienilor cu grupa de snge A.
2. Afiai valoarea minim, medie i maxim a nlimii pentru
femeile cu vrsta peste 35 de ani.
3. Afiai valoarea medie a vrstei pentru pacienii cu ameeli.
4. Afiai simptomele pentru brbaii cu asigurare de sntate.
5. Afiai numele i grupa de snge pentru femeile cu asigurare de
sntate.
6. Afiai numele i simptomele pentru pacienii cu vrste ntre 25 i
35 de ani.
7. Afiai numele, nlimea i greutatea pentru femeile cu greutatea
sub 70 kg.
8. Afiai numele, sexul i temperatura pentru pacienii cu ameeli i
dureri de gt.
9. Afiai nlimea medie a femeilor cu greutatea ntre 70 i 80 kg.
10.
Afiai greutatea medie a brbailor cu nlimea peste 180
cm.

Interogri SQL n Microsoft Acces|2

S-ar putea să vă placă și