Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » referate » informatica » sql
Conditii de jonctiune

Conditii de jonctiune


Conditii de jonctiune

Una dintre cele mai puternice caracteristici ale SQL-ului este capacitatea de grupare si manipulare a datelor din mai multe tabele. Practic SQL nu dispune de clauze sau operatori speciali de jonctiune, aceasta fiind o combinatie intre produsul cartezian si selectie.

O jonctiune este o legatura intre doua sau mai multe tabele care au cel putin un camp comun. Aceasta operatie consta in crearea unei tabele temporare compusa din liniile care satisfac conditia de jonctiune.Standardele SQL nu limiteaza numarul de tabele pentru care se poate calcula produsul cartezian. Cu toate acestea, in practica cel mai adesea sunt admise intr-o clauza FROM maximum opt tabele.

Atunci cand in jonctiune participa mai multe tabele (specificate prin clauza FROM), identificarea fara ambiguitate a campurilor ce se regasesc in mai multe tabele se realizeaza prin plasarea inaintea numelui lor a numelui tabelei din care fac parte. Intre numele tabelei si cel al campului se plaseaza ca delimitator punctul.

Fie tabelele STUDENT1 (cu 16 inregistrari) si STUDENT2 (cu 19 inregistrari) cu structurile:

STUDENT2 STUDENT1

NRMATR, N, 4  NRMATR, N, 4

NUMEST, C, 20  SPECIALIZ, N, 4

PRENUME, C, 20  MEDIA, N,5, 2

ORAS, C, 15

CODPOSTAL, N, 4

In aceste tabele campul NRMATR este comun si realizeaza legatura intre cele doua relatii, o posibila fraza SELECT putand fi:

SELECT STUDENT1.NRMATR, STUDENT2.NUMEST,;

STUDENT2.PRENUME, STUDENT2.ORAS,STUDENT1.MEDIA;

FROM STUDENT1, STUDENT2



Prin aceasta fraza SELECT, daca nu apare clauza conditionala WHERE, tabela rezultat va contine 16*19 linii =304 linii. In acest caz jonctiunea este incrucisata sau de tip cross, adica fiecarei inregistrari din STUDENT1 corespunzandu-i, pe rand, cele 19 inregistrari din STUDENT2. O jonctiune cross este departe de a fi folositoare, fiind mare consumatoare de timp si resurse.

Fraza SELECT pentru jonctiunea naturala a celor doua tabele va fi urmatoarea:

SELECT *FROM STUDENT1, STUDENT2;

WHERE STUDENT1.NRMATR=STUDENT2.NRMATR AND ORAS='iasi' AND MEDIA >=9

Prin aceasta fraza vor fi selectati toti studentii din orasul Iasi a caror medie este egala sau mai mare decat 9.00, preluandu-se toate campurile celor doua tabele. In acest caz coloana Nrmatr va aparea de doua ori in tabela rezultat urmata de aliasul tabelei din structura careia face parte, respectiv Nrmatr_a si Nrmatr_b.

Conditiile de jonctiune se pot introduce prin diversi operatori. Atunci cand conditia de jonctiune este realizata prin operatorul relational de egalitate "=" ea poarta numele de echijonctiune fiind, de altfel si cea mai folosita forma de produs cartezian.

Daca se foloseste un oricare alt operator, in afara de "=", se realizeaza o non-echijonctiune numita si thetajonctiune. In acest caz fraza SELECT va avea structura:

SELECT B.NUMEST, B.PRENUME, B.ORAS, A.MEDIA ;

FROM STUDENT2 B, STUDENT1 A ;

WHERE A.NRMATR = B.NRMATR AND A.MEDIA>8.50

In acest exemplu s-a utilizat varianta in care numele campurilor a fost prefixat printr-un caracter folosit la referirea tabelelor in clauza FROM.





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.