Limbaj de Programare

Previzualizare curs:

Extras din curs:

Metode de selecţie a datelor din tabele multiple

Obiective

După parcurgerea acestei secţiuni, studentul va avea cunoştinţele necesare:

• scrierii unei expresii SELECT pentru a accesa date din mai multe tabele folosind legături

(joncţiuni) de egalitate si nonegalitate;

• vizualizării datelor care nu îndeplinesc o condiţie de joncţiune folosind condiţii de joncţiune

externă;

• efectuării unei joncţiuni între un tabel şi el însuşi;

EMP DEPT

Există situaţii când trebuie să accesăm date din mai multe tabele. În exemplul de mai sus, rezultatul

afişat conţine date din două tabele separate.

• atributul EMPNO există în tabelul EMP;

• atributul DEPTNO există în ambele tabele EMP şi DEPT;

• atributul LOC există în tabelul DEPT.

Pentru a obţine rezultatul dorit trebuie realizată o legătură între tabelele EMP şi DEPT.

Definirea joncţiunilor

Vom folosi o condiţie de joncţiune ori de câte ori trebuie să accesăm date din mai multe tablele din

baza de date. Se poate crea o corespondenţă între liniile unui tabel şi liniile altui tabel pe baza

valorilor comune existente în coloanele corespondente, care sunt de obicei chei primare şi străine.

Pentru afişarea datelor din două sau mai multe tabele aflate în relaţie se va scrie o simplă condiţie

de joncţiune în clauza WHERE:

SELECT tabel1.coloana1, tabel1.coloana2, tabel2.coloana3

FROM tabel1, tabel2

WHERE tabel1.coloana1 = tabel2.coloana3;

EMPNO ENAME … DEPTNO

7893 KING … 10

7698 BLAKE … 30

… …

7934 MILLER … 10

DEPTNO DNAME LOC

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

EMPNO DEPTNO LOC

7893 10 NEW YORK

7698 30 CHICAGO

7782 10 NEW YORK

7566 20 DALLAS

7654 30 CHICAGO

7499 30 CHICAGO

14 rows selected

2

unde:

tabel.coloana indică tabelul şi coloana de unde este extrasă data

tabel1.coloana1 = este condiţia care leagă

tabel2.coloana2 cele două tabele

Observaţii:

• în momentul scrierii unei expresii SELECT care conţine o condiţie de joncţiune, este indicat ca

numele coloanelor să fie precedate de numele tabelului de care aparţin; în acest fel este mărită

claritatea codului SQL şi se îmbunătăţeşte accesul la baza de date.

• dacă un acelaşi nume de coloană apare în mai multe tabele, numele coloanei trebuie prefixat cu

numele tabelului de care aparţine.

• pentru a realiza o legătură între n tabele este nevoie de minim n-1 condiţii de joncţiune (e.g.

pentru a lega 4 tabele sunt necesare 3 joncţiuni). Această regula s-ar putea să nu se aplice dacă

tabelul are o cheie primară formată din mai multe atribute şi astfel este necesară mai mult de o

coloană pentru a identifica în mod unic fiecare linie.

Produsul Cartezian

Atunci când o condiţie de joncţiune este invalidă sau complet omisă, rezultatul este un produs

cartezian în care vor fi afişate toate combinaţiile de linii din tabelele implicate. Un produs cartezian

tinde să genereze un număr mare de linii, iar rezultatul său este în general nefolositor. De aceea

trebuie inclusă întotdeauna o condiţie de joncţiune validă în clauza WHERE, cu excepţia cazului

când se doreşte în mod explicit combinarea tuturor liniilor din tabele implicate în relaţie.

Exemplul următor afişează numele fiecărui angajat şi numele departamentului în care lucrează din

tabelele EMP şi DEPT. Deoarece nu a fost specificată clauza WHERE, toate liniile (14) din tabelul

EMP sunt combinate cu toate liniile (4) din tabelul DEPT, generând astfel 56 de linii în tabelul

rezultat.

SQL> SELECT emp.ename, dept.dname

2 FROM emp, dept;

ENAME DNAME

------ -----------

KING ACCOUNTING

BLAKE ACCOUNTING

...

KING RESEARCH

BLAKE RESEARCH

...

56 rows selected.

Tipuri de condiţii de joncţiune

Principalele tipuri de condiţii de joncţiune sunt:

1. echi-joncţiune;

2. non-echi-joncţiune.

Pe lângă acestea mai există şi alte tipuri de condiţii de joncţiune:

3. joncţiune externă;

4. joncţiune între un tabel şi el însuşi.

5.

1. Echi-joncţiuni

Pentru a determina numele departamentului unui angajat trebuie comparată valoarea din coloana

DEPTNO din tabelul EMP cu valorile DEPTNO din tabelul DEPT. Legătura astfel creată între

tabelele EMP şi DEPT este o echi-joncţiune - valorile din coloana DEPTNO din ambele tabele

trebuie să coincidă.

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Limbaj de Programare.pdf
Alte informații:
Tipuri fișiere:
pdf
Nota:
8/10 (1 voturi)
Nr fișiere:
1 fisier
Pagini (total):
12 pagini
Imagini extrase:
12 imagini
Nr cuvinte:
3 963 cuvinte
Nr caractere:
22 329 caractere
Marime:
221.45KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Limbaje de Programare
Predat:
la facultate
Materie:
Limbaje de Programare
Sus!