Scrigroup - Documente si articole

     

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


Sortarea datelor. Clauza ORDER BY

sql



+ Font mai mare | - Font mai mic



Sortarea datelor. Clauza ORDER BY

Ati fost probabil destul de des in situatia de a trebui sa ordonati anumite date pe baza unor criterii orarecare. Imaginati-va cam ce ar insemna sa cautati numarul de telefon al unei persoane intr-o carte de telefoane in care persoanele sunt trecute intr-o ordine aleatoare, nu ordonate alfabetic asa cum suntem noi obisnuiti.



Pentru a preciza criteriile dupa care se ordoneaza datele folosim clauza ORDER BY. In aceasta clauza se vor preciza coloanele sau expresiile dupa care se vor ordona liniile unei tabele inainte de a fi afisate.

De exemplu, afisarea datelor din tabela persoane in ordine alfabetica (crescatoare) a localitatii se face folosind comanda:

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Ionescu

Gheorghe

Brasov

Bischin

Paraschiva

Brasov

Popescu

Ioan

Bucuresti

Vasilescu

Vasile

Cluj-Napoca

Georgescu

Maria

Iasi

Olaru

Angela

Ploiesti

Marinescu

Angela

Sibiu

Antonescu

Elena

Sibiu

SELECT * FROM persoane Tabelul II.1.16.

ORDER BY localitate

Se observa ca exista mai multe persoane din aceeasi localitate. Daca vrem ca persoanele din aceeasi localitate sa fie ordonate descrescator dupa salariu scriem:

SELECT * FROM persoane

ORDER BY localitate, salariu DESC

optiunea DESC precizeaza ca sortarea se face descrescator. Pentru a sorta crescator se poate preciza acest lucru cu optiunea ASC, dar aceasta este optionala deoarece implicit datele sunt sortate crescator.

Rezultatul rularii comenzii anterioare este cel din tabelul II.1.17.

Tabelul II.1.17.

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Bischin

Paraschiva

Brasov

Ionescu

Gheorghe

Brasov

Popescu

Ioan

Bucuresti

Vasilescu

Vasile

Cluj-Napoca

Georgescu

Maria

Iasi

Olaru

Angela

Ploiesti

Marinescu

Angela

Sibiu

Antonescu

Elena

Sibiu

Haideti sa sortam acum tabela persoane dupa codul firmei. Vom scrie:

SELECT * FROM persoane ORDER BY firma

Rularea acestei comenzi duce la afisarea tabelului II.1.18. Sa observam ca Marinescu Angela, deoarece nu are completat codul firmei (valoarea coldlui firmei este null) a fost afisata ultima. Asadar la ordonarea crescatoare (implicita) valorile nule se trec la sfarsit, in timp ce la sortarea descrescatoare valorile nule apar la inceput.

Tabelul II.1.18.

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Antonescu

Elena

Sibiu

Popescu

Ioan

Bucuresti

Vasilescu

Vasile

Cluj-Napoca

Ionescu

Gheorghe

Brasov

Bischin

Paraschiva

Brasov

Olaru

Angela

Ploiesti

Georgescu

Maria

Iasi

Marinescu

Angela

Sibiu

Comanda

SELECT * FROM persoane

ORDER BY firma DESC

va face ca Marinescu Angela sa fie afisata prima (tabelul II.1.19).

Tabelul II.1.19.

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Marinescu

Angela

Sibiu

Georgescu

Maria

Iasi

Ionescu

Gheorghe

Brasov

Olaru

Angela

Ploiesti

Bischin

Paraschiva

Brasov

Vasilescu

Vasile

Cluj-Napoca

Antonescu

Elena

Sibiu

Popescu

Ioan

Bucuresti

In criteriile de ordonare pot sa apara si expresii nu doar coloane din tabela interogata. Astfel putem scrie:

SELECT * FROM persoane ORDER BY prenume || nume

reztatul fiind cel din tabelul II.1.20.

De asemenea putem preciza ca sortarea sa se faca dupa o expresie care apare in clauza SELECT prin indicarea pozitiei expresiei respective in lista de expresii din clauza SELECT. Astfel comanda

SELECT nume, prenume, salariu

FROM persoane ORDER BY 3 DESC



va sorta descrescator liniile dupa salariu, deoarece in caluza SELECT, salariu este a treia expresie (Atentie! In tabela persoane salariul este coloana a 7-a):

Tabelul II.1.20.

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Antonescu

Elena

Sibiu

Bischin

Paraschiva

Brasov

Georgescu

Maria

Iasi

Ionescu

Gheorghe

Brasov

Marinescu

Angela

Sibiu

Olaru

Angela

Ploiesti

Popescu

Ioan

Bucuresti

Vasilescu

Vasile

Cluj-Napoca

Tabelul II.1.21.

NUME

PRENUME

SALARIU

Marinescu

Angela

Olaru

Angela

Popescu

Ioan

Vasilescu

Vasile

Georgescu

Maria

Antonescu

Elena

Ionescu

Gheorghe

Bischin

Paraschiva

Mai mult in clauza ORDER BY putem folosi aliasul unei coloane ca in exemplul urmator:

SELECT nume||' '||prenume AS 'Nume si prenume', salariu

FROM persoane

ORDER BY 'Nume si prenume'

rezultatul fiind cel din tabelul II.1.22.

Desigur clauzele WHERE si ORDER BY pot aparea impreuna in aceeasi comanda, ordinea in care acestea apar fiind WHERE si apoi ORDER BY, aceasta fiind si ordinea in care sunt executate: mai intai sunt selectate liniile care trebuie sa fie afisate si abia apoi sunt sortate conform criteriului stabilit prin clauza ORDER BY. De exemplu, pentru a afisa in ordine descrescatoare a salariilor doar persoanele din Brasov si Sibiu scriem:

SELECT * FROM persoane

WHERE localitate IN ('Sibiu', 'Brasov')

ORDER BY salariu DESC

rezultatul rularii acestei comenzi fiind cel din tabelul II.1.23.

Tabelul II.1.22.

Nume si prenume

SALARIU

Antonescu Elena

Bischin Paraschiva

Georgescu Maria

Ionescu Gheorghe

Marinescu Angela

Olaru Angela

Popescu Ioan

Vasilescu Vasile

Tabelul II.1.23.

COD

NUME

PRENUME

LOCALITATE

FIRMA

JOB

SALARIU

Marinescu

Angela

Sibiu

Antonescu

Elena

Sibiu

Ionescu

Gheorghe

Brasov

Bischin

Paraschiva

Brasov




Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


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