Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Sinonime locale si jonctiunea unei tabele cu ea insasi

sql



+ Font mai mare | - Font mai mic



Sinonime locale si jonctiunea unei tabele cu ea insasi

Lucrul cu nume lungi de tabele (STUDCARTE) si atribute (cod_localitate) prezinta marele avantaj al lejeritatii la citire si intelegeri rapide a logicii de derulare a interogarii. In schimb, destul de multi informaticieni nu agreaza risipa de caractere (si, implicit de timp) implicata de redactarile presupuse de folosirea numelor lungi.



Pentru aceasta in frazele SELECT, tabelelor li  pot asocia sinonime sau aliasuri mai scurte. Pentru exemplificare, ultima interogare se poate rescrie astfel:

SELECT DISTINCT nume_camin

FROM STUDENT S, STUDCARTE SC, CARTE C

WHERE

S.nr_matricol = SC.nr_matricol AND

SC.cota_carte = C.cota_carte AND

titlu = "Informatica de gestiune"

INTERSECT

Tabelei STUDENT i s-a asociat sinonimul S, STUDCARTE SC, iar pentru CARTE C. Sinonimele prefixeaza (atunci cand este cazul) numele atributelor din clauzele SELECT si WHERE (eventual ORDER BY si GROUP BY

O operatie in care obligatoriu trebuie folosite sinonimele este jonctionarea unei tabele cu ea insasi.

Revenim la exemplul 25 din algebra relationala.

Ce studenti studiaza la aceeasi sectie cu Dinescu Monica?

SELECT S2.nume

FROM STUDENT S1, STUDENT S2

WHERE S1.sectia = S2.sectia AND S1.nume = "Dinescu

Monica"

Jonctiunea unei tabele cu ea insasi presupune, de fapt, jonctiunea a doua instante ale tabelei respective. Rezultatul jonctiunii S1 cu S2 este o tabela intermediara, asupra careia se aplica predicatul de selectie suplimentar S1.nume = "Dinescu Monica", rezultatul final fiind prezentat in figura 4.22.

nume

Popescu Ion Octavian

Popescu Marilena

Danciu Monica

Dinescu Monica

Cristea Roxana

Goia Simona

Stanciu Maria

Figura 4.22. Numele celor de la aceeasi sectie cu Dinescu Monica

O alta varianta se prezinta astfel:

SELECT S2.nume

FROM STUDENT S1 INNER JOIN STUDENT S2 ON S1.sectia = S2.sectia

WHERE S1.nume = "Dinescu Monica"

Am ramas datori cu formularea solutiei 2 din algebra relationala de la exemplul 22:

De la ce sectii sunt studentii care au imprumutat si cartea "Informatica de gestiune" si "Contabilitate generala"?

Jonctionam o instanta obtinuta prin jonctiunea STUDENT-STUDCARTE-CARTE (in care titlu = "Informatica de gestiune" cu o alta instanta a aceleiasi combinatii (in care titlu = "Contabilitate generala"

- solutia 2 - varianta 1 (generala):

SELECT DISTINCT S1.sectia

FROM STUDENT S1, STUDCARTE SC1, CARTE C1, STUDENT S2, STUDCARTE SC2, CARTE C2

WHERE

S1.nr_matricol = SC1.nr_matricol AND

SC1.cota_carte = C1.cota_carte AND

C1.titlu = "Informatica de gestiune" AND

S2.nr_matricol = SC2.nr_matricol AND

SC2.cota_carte = C2.cota_carte AND

C2.titlu = "Contabilitate generala" AND

S1.sectia = S2.sectia

- solutia 2 - varianta 2 (Visual Fox Pro):

SELECT DISTINCT S1.sectia

FROM CARTE C1

INNER JOIN STUDCARTE SC1 ON C1.cota_carte = SC1.cota_carte

INNER JOIN STUDENT S1 ON SC1.nr_matricol = S1.nr_matricol

INNER JOIN STUDENT S2 ON S1.sectia = S2. sectia

INNER JOIN STUDCARTE SC2 ON SC2.nr_matricol = S2.nr_matricol

INNER JOIN CARTE C2 ON SC2.cota_carte = C2.cota_carte

WHERE

C1.titlu = "Informatica de gestiune" AND C2. titlu = "Contabilitate generala"

sectia

CIG

Figura 4.23. Sectia studentilor care au imprumutat si cartea

Informatica de gestiune si Contabilitate de gestiune



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1124
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved