Documente Academic
Documente Profesional
Documente Cultură
STUD
SQL - 4
MATR
---1456
1325
1645
3145
2146
3251
2215
4311
3514
1925
2101
4705
SUBCERERI
SPEC si BURSA
TIP
PMIN PMAX SUMA
-------------------- ----- ----- ----FARA BURSA
0
399
BURSA SOCIALA
400
899
100
BURSA DE STUDIU
900 1799
150
BURSA DE MERIT
1800 2499
200
BURSA DE EXCEPTIE
2500 9999
300
3
PARCURGERI
SUBCERERILE APAR:
n expresiile logice din clauzele WHERE i
HAVING
n clauza ORDER BY a unei cereri SELECT;
valoarea returnat de subcerere pentru
fiecare linie a rezultatului va determina
ordinea de afiare a acestora.
n clauza SELECT; valoarea returnat de
subcerere va fi prezent n rezultatul final.
n clauza FROM; n acest caz ele sunt
asimilate unor tabele temporare din care se
calculeaz rezultatul cererii care le include.
OBIECTIV
CODS NUME
DOMENIU
----- ---------- --------------11 MATEMATICA STIINTE EXACTE
21 GEOGRAFIE UMANIST
24 ISTORIE
UMANIST
NUME
AN GRUPA DATAN
LOC
TUTOR PUNCTAJ CODS
------- -- ------ --------- ---------- ----- ------- ---GEORGE
4 1141A 12-MAR-82 BUCURESTI
2890
11
VASILE
2 1122A 05-OCT-84 PITESTI
1456
390
11
MARIA
3 1131B 17-JUN-83 PLOIESTI
1400
11
ION
1 2112B 24-JAN-85 PLOIESTI
3251
1670
21
STANCA
4 2141A 15-MAY-82 BUCURESTI
620
21
ALEX
5 2153B 07-NOV-81 BRASOV
1570
21
ELENA
2 2122A 29-AUG-84 BUCURESTI
2146
890
21
ADRIAN
3 2431A 31-JUL-83 BUCURESTI
450
24
FLOREA
5 2452B 03-FEB-81 BRASOV
3230
24
OANA
2 2421A 20-DEC-84 BUCURESTI
4311
760
24
MARIUS
1 2412B 02-SEP-85 PITESTI
3514
310
24
VOICU
2 2421B 19-APR-84 BRASOV
4311
1290
24
REZULTAT
O VALOARE
11
10
ALTI OPERATORI
n afar de operatorii uzuali de
comparaie, n cazul acestui tip de
subcereri se pot folosi i operatorii
BETWEEN, LIKE i IS NULL.
Exemplele urmtoare reprezint cereri
valide coninnd i BETWEEN sau LIKE.
Folosirea lui IS NULL pentru o subcerere
este relevant doar n cazul subcererilor
corelate prezentate ntr-un alt
subcapitol.
F. Radulescu. Curs: Baze de date Limbajul SQL
12
SUBCERERI IN BETWEEN
SUBCERERI IN LIKE
Afiarea acelorai date ca mai sus pentru
studenii avnd un nume care nu ncepe cu
aceeai liter cu a studentului cu punctaj
maxim:
13
14
ERORI (1)
15
16
ERORI (2)
O COLOANA
17
18
EXEMPLU
REZULTAT
19
NOT IN
20
SUBCERERI CU GROUP BY
22
NUME
CODS
---------- ----STANCA
21
ALEX
21
NOT IN cont.
24
SOME/ANY SI ALL
EXEMPLE (1)
25
EXEMPLE (2)
O TABELA
27
REGULI
28
REGULI - cont
4. Tipurile elementelor corespondente trebuie
s fie aceleai sau convertibile automat unul
la cellalt (sistemul Oracle face conversia
automat ntre tipurile ir de caractere i
numere/date calendaristice).
5. Condiia este adevrat dac rezultatul
subcererii conine mcar o linie format din
valorile expresiilor din list.
6. Dac rezultatul subcererii este vid ntreaga
condiie este evaluat la fals.
26
29
30
EXEMPLU
OBSERVATIE
31
EXEMPLU
MATR NUME
CODS TUTOR
----- ---------- ----- ----1325 VASILE
11 1456
SUBCERERI PE HAVING
34
EXEMPLE (1)
32
REZULTATE
35
36
EXEMPLE (2)
EXEMPLE (3)
37
SUBCERERI PE FROM
JOIN CU SUBCERERI
40
REZULTAT VID
38
JOIN DE SUBCERERI
41
42
SUBCERERI CORELATE
43
44
45
EXEMPLU
OBSERVATII
46
48
OPERATORUL EXISTS
EXEMPLU
49
SUBCERERI IN ORDER BY
50
EXEMPLU
51
52
SUBCERERI PE SELECT
EXEMPLU
53
54
REGULI
Ambele cereri ntorc acelai numr de coloane.
Coloanele corespondente au valori de acelai tip sau de tipuri
pentru care sistemul poate face automat conversia.
Operatorii pot fi folosii repetat i succesiv pentru a forma
expresii. n acest caz, dac nu se folosesc paranteze pentru a
schimba ordinea de evaluare, ei se execut n ordinea n care
apar n expresie.
Capul de tabel al rezultatului este cel dat de prima cerere din
expresie.
Cererile implicate n aceste operaii nu pot conine clauza
ORDER BY. Aceasta poate s fie pus doar la sfritul expresiei
i poate conine nume de coloane din rezultat sau numerele de
ordine ale acestora.
Rezultatul nu conine linii duplicat. Acestea sunt eliminate chiar
dac provin din aceeai cerere - operand al expresiei.
Sintaxa:
Subcerere
UNION | INTERSECT | MINUS
Subcerere
55
56
EXEMPLU
SELECT NUME, CODS, LOC, PUNCTAJ
FROM STUD
WHERE CODS = 11 AND PUNCTAJ > 2000
UNION
SELECT NUME, CODS, LOC, PUNCTAJ
FROM STUD
WHERE CODS = 21 AND LOC = 'BUCURESTI'
UNION
SELECT NUME, CODS, LOC, PUNCTAJ
FROM STUD
WHERE CODS = 24 AND PUNCTAJ >1500
INTERSECT
SELECT NUME, CODS, LOC, PUNCTAJ
FROM STUD
WHERE PUNCTAJ >= 700
ORDER BY LOC DESC, 4;
F. Radulescu. Curs: Baze de date Limbajul SQL
Sfarsitul capitolului
SUBCERERI
57
58
10