Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Afisarea primelor n linii

sql



+ Font mai mare | - Font mai mic



Afisarea primelor n linii

La sfarsitul anului scolar, dirigintele clasei va roaga sa-l ajutati sa afle care sunt primii trei elevi din clasa, in ordinea descrescatoare a mediei generale, pentru a sti cui sa dea premiile. Asadar se pune problema ca la afisarea datelor dintr-o tabela sa afisati doar primele n linii.



Pentru aceasta veti avea nevoie de pseudocoloana ROWNUM care returneaza numarul de ordine al unei linii intr-o tabela. De exemplu comanda urmatoare va afisa codul, numele si prenumele persoanelor impreuna cu numarul de ordine al acestora in tabela persoane

SELECT cod, nume, prenume, rownum

FROM persoane

rezultatul este cel din tabelul urmator:

Tabelul II.1.24.

COD

NUME

PRENUME

ROWNUM

Ionescu

Gheorghe

Georgescu

Maria

Marinescu

Angela

Antonescu

Elena

Bischin

Paraschiva

Olaru

Angela

Vasilescu

Vasile

Popescu

Ioan

Desi ne-am astepta ca intr-o comanda SELECT care foloseste clauza ORDER BY ROWNUM sa ne afiseze numarul de ordine al inregistrarilor in ordinea data de ORDER BY, acest lucru nu se intampla, numarul de ordine fiind cel din tabela initiala. Observati in acest sens tabelul II.1.25 afisat la rularea comenzii urmatoare

select rownum, cod, nume, prenume,

localitate, firma, job, salariu

from persoane

order by salariu desc

Tabelul II.1.25.

ROWNUM

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Marinescu

Angela

Sibiu

Olaru

Angela

Ploiesti

Popescu

Ioan

Bucuresti

Vasilescu

Vasile

Cluj-Napoca

Georgescu

Maria

Iasi

Antonescu

Elena

Sibiu

Bischin

Paraschiva



Brasov

Ionescu

Gheorghe

Brasov

Asadar daca dorim sa afisam primele 3 inregistrari din tabela initiala vom putea scrie simplu:

SELECT cod, nume, prenume, rownum

FROM persoane

WHERE ROWNUM<=3

afisandu-se rezultatul dorit (tabelul II.1.26.)

Tabelul II.1.26.

COD

NUME

PRENUME

ROWNUM

Ionescu

Gheorghe

Georgescu

Maria

Marinescu

Angela

insa, pentru a afisa persoanele cu cele mai mici trei salarii, comanda urmatoare nu afiseaza ceea ce am dori, deaorece Oracle prima data va returna primele trei inregistrari din tabela persoane si abia apoi le va sorta:

select rownum, cod, nume, prenume,

localitate, firma, job, salariu

from persoane

where rownum<=3

order by salariu desc

comanda aceasta afisand:  Tabelul II.1.27.

ROWNUM

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Marinescu

Angela

Sibiu

Georgescu

Maria

Iasi

Ionescu

Gheorghe

Brasov

Pentru a obtine rezultatul dorit de noi vom folosi o subinterogare astfel

select *

from (select * from persoane

order by salariu)

where rownum<=3

In acest fel am fortat Oracle sa sorteze mai intai liniile si apoi sa afiseze primele trei linii din tabela obtinuta.

Tabelul II.1.28.

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Ionescu

Gheorghe

Brasov

Bischin

Paraschiva

Brasov

Antonescu

Elena

Sibiu





Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1657
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