Documente Academic
Documente Profesional
Documente Cultură
_____________________________________________________________________
JONCȚIUNI EXTERNE
Funcția DECODE și expresia CASE
I. Joncțiuni externe
Permit regăsirea înregistrărilor comune și în plus față de joncțiunea de egalitate și a
celor care se regăsesc doar într-o singură tabelă.
Joncțiunea se poate realiza precizând în dreptul legăturii dintre tabele a semnului (+),
de exemplu condiția: tabela_A.cheie_primara=tabela_B.cheie_externa(+) va returna
înregistrările comune și a celor care aparțin doar tabelei A.
Exemple:
1. Să se afișeze produsele comandate împreună cu cele care nu se regăsesc pe nici o
comanda.
SELECT p.id_produs, p.denumire_produs, rc.cantitate, rc.pret
FROM produse p, rand_comenzi rc
WHERE p.id_produs = rc.id_produs (+);
Pagina 1 din 4
BAZE DE DATE – SEMINAR 9
_____________________________________________________________________
Sau dacă se utilizează comparații pe variabile sau coloane diferite se poate apela la
varianta următoare:
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. Să se identifice ierarhia angajaților responsabili cu vânzările.
SELECT id_angajat, nume, id_functie, LEVEL FROM angajati
CONNECT BY id_angajat = PRIOR id_manager
START WITH id_functie = 'SA_REP';
Pagina 2 din 4
BAZE DE DATE – SEMINAR 9
_____________________________________________________________________
Pagina 3 din 4
BAZE DE DATE – SEMINAR 9
_____________________________________________________________________
CASE imbricat
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;
Răspuns
Pagina 4 din 4