Sunteți pe pagina 1din 5

BAZE DE DATE – SEMINAR 9

_____________________________________________________________________

Jonctiuni externe
Functia DECODE si expresia CASE

1) Jonctiuni externe
Permit regasirea inregistrarilor comune si in plus fata de jonctiunea de egalitate si a
celor care se regasesc doar intr-o singura tabela.
Jonctiunea se poate realiza precizand in dreptul legaturii dintre tabele a semnului (+),
de exemplu conditia: tabela_A.cheie_primara=tabela_B.cheie_externa(+) va returna
inregistrarile comune si a celor care apartin doar tabelei A.

Exemple:

1. Sa se afiseze produsele comandate impreuna cu cele care nu se regasesc pe


nici o comanda.

....................................................

...

2. Sa se afiseze toti angajatii care au incheiat comenzi, precum si cei care nu au


incheiat comenzi.

....................................................

1
BAZE DE DATE – SEMINAR 9
_____________________________________________________________________

...

2) Realizarea interogarilor pe baza unor conditii

Functia DECODE – este utilizata pentru calcularea si returnarea unor expresii in


functie de anumite conditii de egalitate

Sintaxa este:

DECODE (VARIABILA, conditie1, expresie1, conditie2, expresie2, ….., conditie_n,


expresie_n, valoare n+1 implicita)

Expresia CASE – este utilizata pentru calcularea si returnarea unor expresii in functie
de anumite conditii diverse in care se pot utiliza operatori de comparatie, nu
numai operatorul de egalitate.

Sintaxa este:

1) CASE [VARIABILA]
WHEN conditie1 THEN expresie1
WHEN conditie2 THEN expresie2
…………………………………….
WHEN conditie_n THEN expresie_n
ELSE valoare n+1 implicita
END

2
BAZE DE DATE – SEMINAR 9
_____________________________________________________________________

Sau daca se utilizeaza comparatii pe variabile sau coloane diferite se poate apela la
varianta urmatoare:

2) CASE
WHEN VARIABILA1 conditie1 THEN expresie1
WHEN VARIABILA2 conditie2 THEN expresie2
…………………………………….
WHEN VARIABILA conditie_n THEN expresie_n
ELSE valoare n+1 implicita
END

Exemple:

1. Sa se calculeze comisionul agentilor in functie de pozitia (functia) ocupata:


 0.1% din valoarea comenzilor daca functia este SA_REP
 0.2% din valoarea comenzilor daca functia este SA_MAN
 0.3% din valoarea comenzilor daca functia este AD_PRES
Pentru celelalte functii comisionul va fi 0.

....................................................

...

Daca se aplica acest comision la valoarea comenzilor (SUM(cantitate*pret))


interogarea devine:

....................................................

3
BAZE DE DATE – SEMINAR 9
_____________________________________________________________________

Cu functia DECODE cerinta se poate rezolva astfel:

....................................................

2) Sa se calculeze discountul (DC) pentru clienti astfel:


 daca clientul a incheiat 1 comanda atunci DC= 10%;
 daca a incheiat 2 comenzi atunci DC =15%;
 daca a incheiat mai mult de 3 comenzi atunci DC =20%.

....................................................

Case imbricate

select nume_client, limita_credit, starea_civila,


case
when starea_civila ='married' then
case when limita_credit <400
then 'married with low budget'
when limita_credit between 400 and 1000
then 'married with medium budget'
else 'married with high budget' end
else 'single' end clasificare
from clienti;

Tema individuala: Sa se calculeze discountul pentru produse astfel:


 daca regiunea este Europe atunci CT= 10% din valoarea totala a comenzilor
 daca zona firmei este America atunci CT=15% din valoarea totala a
comenzilor
 daca zona firmei este Asia atunci CT=12% din valoarea totala a comenzilor
 daca zona firmei este Orientul mijlociu si Africa atunci CT=18% din valoarea
totala a comenzilor

SELECT denumire_produs, categorie,


CASE WHEN categorie like 'hardware%' THEN 0.1
WHEN categorie LIKE 'software%' THEN 0.11
ELSE 0.01 END discount
FROM produse;

4
BAZE DE DATE – SEMINAR 9
_____________________________________________________________________

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