Ordonarea datelor dintr-o tabela

 

O tabela este o structura de date care prezinta de regula o slaba structura de ordine. In activiatea de interogare a tabelelor, este necesar ca accesul la informatii sa se faca intr-o alta ordine decat cea in care s-au introdus articolele.

Prin ordonarea unei tabele se intelege asezarea articolelor sale intr-o anumita ordine, pe baza unui criteriu de ordonare astfel incat fiecare articol sa respecte acest criteriul in raport cu articolul anterior si articolul urmator.

Criteriul dupa care se face ordonarea poate fi un singur camp, mai multe, sau o expresie care contine unul sau mai multe campuri.

Criteriul dupa care se face ordonare se numeste cheie de ordonare.

Ordonarea se poate face crescator sau descrescator, fizic sau logic.

 

Ordonare fizica. Sortarea datelor

 

Este o operatie realizata prin schimbarea intre ele a articolelor unei tabele conform ordinii date de cheia de ordonare, obtinandu-se astfel un duplicat al tabelei initiale.

Se realizeaza cu comanda urmatoare:

 

SORT  ON camp1 [/A][/D],[ camp2 [/A][/D], ...]   [ASCENDING | DESCENDING] [FIELDS lista_campuri] [domeniu] To nume_tabela_noua [FOR conditie]

 

Clauzele ASCENDING | DESCENDING determina stabilirea tipului implicit de sortare (crescator /descrescator) pentru toate campurile care alcatuiesc cheia de sortare.

Clauzele /A si /D, daca sunt asociate campurilor, au prioritate fata de  ASCENDING | DESCENDING.

In cazul in care sortarea se face  dupa mai multe campuri, ordonarea se va face mai intai dupa valorile din primul camp; daca exista valori egale pentru primul camp ordonarea se va face dupa  al doilea camp s.a.m.d.

Observatie: in mod implicit ordonarea se face crescator

 

Probleme propuse:

 

1. Fie tabela depozit.dbf, care descrie obiectele aflate intr-un depozit avand campurile: den_mat(C15), calitatea(N1) poate fi un numar 1,2 sau 3., cantitate (N 4), pretunit (N15), furnizor(C15).

a)      sa se adauge 10 inregistrari in tabela

b)      sa se afiseze datele alfabetic dupa furnizor in tabela furnizori (se vor retine den_mat(C15), calitatea(N1)si furnizor(C15).)

c)      sa se ordoneze datele alfabetic dupa denumirea materialelor apoi dupa calitate descrescator

d)      sa se ordoneze produsele de calitatea I datele descrescator dupa pret

e)      sa se adauge o noua inregistrare in tabela depozit (datele se vor citi de la tastatura). Sa se reordoneze datele descrescator dupa pret.

 

2. Tabela sport.dbf retine datele unui concurs sportiv (nume(C15) , nrc(N2) pt. Numar de concurs, proba (c15), punctaj (N3).

a)      Sa se afiseze datele ordonate alfabetic pe probe, si in cadrul aceleasi probe se vor afisa descrescator dupa punctaj. Daca exista acelasi punctaj pentru doi jucatori, datele se vor afisa alfabetic dupa nume.

b)      Sa se afiseze descrescator datele dupa punctaj pentru o proba citita de la tastatura

c)        Sa se afiseze medaliatii cu aur pentru o proba citita de la tastatura

d)       Sa se afiseze medaliatii cu argint pentru o proba citita de la tastatura

e)      Sa se afiseze medaliatii cu bronz pentru o proba citita de la tastatura

3. Fie tabela examen.dbf care prelucreaza datele unor elevi la un examen avan urmatoarea structura: nume (C15), prenume(C15), ex1 (n2), ex2(n2),media (C5.2),datan(D) reprezinta data_nasterii, admis (L)

            a) sa se afiseze elevii ordonati descrescator dupa medie

            b) sa se genereze tabela admisi care va retine doar datele elevilor admisi ordonate descrescator dupa medie

            c) sa se genereze tabela admisi care va retine datele admisilor, doar campurile nume, prenume si media

            d) sa se genereze tabela admisi care va retine datele elevilor ordonate alfabetic dupa nume

            e) sa se genereze tabela admisi care va retine datele elevilor ordonate alfabetic dupa nume, elevii care vor avea acelasi nume vor fi ordonati dupa prenume

            f) sa se genereze tabela admisi care va retine datele elevilor ordonate alfabetic dupa nume, elevii care vor avea acelasi nume vor fi ordonati dupa prenume, iar cei care au acelasi nume si prenume vor fi ordonati dupa medie descrescator

            g) sa se afiseze toti elevii cu medii intre 6 si 8 cu mediile in ordine crescatoare

            h) sa se afiseze primii 5 elevi cu cele mai mici varste

            i) sa se adauge o noua inregistrare in tebela. Sa se afiseze datele ordonate dupa criteriul de la pct f.