Вы находитесь на странице: 1из 12

AFISAREA DATELOR DIN TABELE MULTIPLE

Obiective
Dupa completarea acestei lectii, veti putea face urmatoarele:
Scrieti expresii SELECT pentru a accesa date din mai multe tabele folosind
legaturi (join-uri) de egalitate si inegalitate
Vizualizati date care n general nu se acceseaza printr-o conditie join simpla ci
folosind join-uri exterioare
Efectuarea unui join a unui tabel cu el nsusi.
Scopul lectiei
Aceasta lectie cuprinde cum sa obtinem date din mai mult de un singur tabel, folosind diferite
metode disponibile.
Obtinerea datelor mai multe tabele
EMP
EMPNO
7893
7698

7934

DEPT
ENAME
KING
BLAKE

MILLER

DEPTNO
10
30

10

DEPTNO

10
20
30
40

DEPTNO
7893 10
7698 30
7782 10
7566 20
7654 30
7499 30

14 rows selected

DNAME
ACCOUNTING
RESEARCH
SALES
OPERATIONS

LOC
NEW YORK
DALLAS
CHICAGO
BOSTON

LOC
NEW YORK
CHICAGO
NEW YORK
DALLAS
CHICAGO
CHICAGO

EMPNO

Date din mai multe tablele


Cteodata este nevoie de folosit date din mai multe tabele. n exemplul de mai sus, rezultatul
afiseaza date din doua tabele separate.
EMPNO exista n tabelul EMP
DEPTNO exista n ambele tabele EMP si DEPT
LOC exista n tabelul DEPT.
Pentru a se ajunge la rezultatul final, tabelele EMP si DEPT trebuie legate si accesa date din amndoua.

Ce este un JOIN ?
Folositi un join pentru a interoga datele din mai multe tabele.
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;

Scrie conditia JOIN n clauza WHERE.


Prefixeaza numele coloanei cu numele tabelului cnd acelasi nume de coloana apare n mai
mult de un tabel.

Definirea JOIN-urilor
Cnd trebuie obtinute datele din mai multe tablele din baza de date este folosita o conditie de join.
Liniile dintr-un tabel pot fi alaturate la liniile din alt tabel conform cu valorile comune existente n
coloanele corespondente, care sunt de obicei, coloane chei primare si straine.
Pentru a afisa date din doua sau mai multe tabele n relatie, scrieti o simpla conditie join n clauza
WHERE.
n sintaxa:
table.column
denota tabelul si coloana de unde este extrasa data
table1.column1=
este conditia care alatura (leaga)
table2.column2
tabelele mpreuna
Observatii:
Cnd scrieti o expresie SELECT care leaga tabele, precedati numele coloanei cu numele
tabelului pentru claritate si pentru a mari viteza accesului la baza de date.
Daca acelasi nume de coloana apare n mai multe tabele, numele coloanei trebuie prefixat cu
numele tabelului.
Pentru a alatura n tabele mpreuna, este nevoie de minim n-1 conditii de join. Asadar, pentru a
alatura 4 tabele, sunt necesare 3 join-uri. Aceasta regula s-ar putea sa nu se aplice daca tabelul
are o cheie primara concatenata, si astfel mai mult de o coloana este necesara pentru a identifica
n mod unic fiecare linie.
Produsul Cartezian

Un produs cartezian este format cnd:


- o conditie join este omisa
- o conditie join este invalida
- toate liniile n primul tabel sunt alaturate la liniile din tabelul al doilea
Pentru a evita un produs cartezian, includeti totdeauna o conditie join valida ntr-o
clauza WHERE

Produsul Cartezian
Cnd o conditie join este valida sau complet omisa, rezultatul este un produs cartezian n care vor fi
afisate toate combinatiile de linii.
Toate liniile din primul tabel sunt alaturate la toate liniile din al doilea tabel.

Un produs cartezian tinde sa genereze un numar mare de linii, si rezultatul sau este rar folositor.
Trebuie inclus ntotdeauna o conditie join valida ntr-o clauza WHERE; cu exceptia cazului cnd se
doreste n mod explicit combinarea tuturor liniilor din tabele.
Generarea unui produs cartezian
EMP (14 rows)

DEPT (4 rows)

EMPNOENAMEDEPTNO7893KING
EMPNOENAMEDEPTNO7893KING
107698BLAKE307934MILLER10
107698BLAKE307934MILLER10

Cartesian
product:
14*4=56 rows"

DEPTNODNAMELOC10ACCOUNTINGNEW
DEPTNODNAMELOC10ACCOUNTINGNEW
YORK20RESEARCHDALLAS30SALESCHIC
YORK20RESEARCHDALLAS30SALESCHIC
AGO40OPERATIONSBOSTON
AGO40OPERATIONSBOSTON

ENAMEDNAMEKINGACCOUNTI
ENAMEDNAMEKINGACCOUNTI
NGBLAKEACCOUNTING...KING
NGBLAKEACCOUNTING...KING
RESEARCHBLAKERESEARCH...C
RESEARCHBLAKERESEARCH...C
HICAGO56 rows selected.
HICAGO56 rows selected.

Un produs cartezian este generat daca o conditie join este omisa. Exemplul alaturat afiseaza numele
angajatului si numele departamentului din tabelele EMP si DEPT. Deoarece nu au fost specificate nici o
clauza WHERE, toate liniile (14) din tabelul EMP sunt alaturate cu toate liniile (4) din tabelul DEPT,
genernd astfel 56 de linii n tabelul de iesire.
SQL > SELECT ename, dname
2 FROM emp, dept;
ENAME
DNAME
------------------- --------------------KING
ACCOUNTING
BLAKE
ACCOUNTING
...
KING
RESEARCH
BLAKE
RESEARCH
...
56 rows selected.

Tipuri de Join-uri
Equijoin

Non-equijoin

Outer join

Exista doua tipuri importante de conditii join:


Echijoin-uri
3

Self join

Non-echijoin-uri

Metode aditionale de joinuri includ urmatoarele:


Outer join
Self join
Operatori
Ce este un Echijoin ?
EMP

DEPT

EMPNO ENAME
7839 KING
7698 BLAKE
7782 CLARK
7566 JONES
7654 MARTIN
7499 ALLEN
7844 TURNER
7900 JAMES
7521 WARD
7902 FORD
7369 SMITH
...
14 rows selected.

DEPTNO
10
30
10
20
30
30
30
30
30
20
20

DEPTNO DNAME
10 ACCOUNTING
30 SALES
10 ACCOUNTING
20 RESEARCH
30 SALES
30 SALES
30 SALES
30 SALES
30 SALES
20 RESEARCH
20 RESEARCH
...
14 rows selected.

LOC
NEW YORK
CHICAGO
NEW YORK
DALLAS
CHICAGO
CHICAGO
CHICAGO
CHICAGO
CHICAGO
DALLAS
DALLAS

Cheie straina Cheie primara


Echijoin-uri
Pentru a determina numele departamentului unui angajat, trebuie comparat valoarea din coloana
DEPTNO din tabelul EMP cu valorile DEPTNO din tabelul DEPT. Relatia dintre tabelele EMP si
DEPT este un echijoin - aceasta nsemand ca, valorile din coloana DEPTNO din ambele tabele trebuie
sa fie egale. Frecvent, acest tip de join-uri implica complementele cheilor primare si straine.
Extragerea inregistrarilor cu Echijoin-uri
SQL> SELECT
2
3 FROM
4 WHERE

emp.empno, emp.ename, emp.deptno,


dept.deptno, dept.loc
emp, dept
emp.deptno=dept.deptno;

EMPNO ENAME
7839 KING
7698 BLAKE
7782 CLARK
7566 JONES
...
14 rows selected.

DEPTNO
10
30
10
20

DEPTNO
10
30
10
20

LOC
NEW YORK
CHICAGO
NEW YORK
DALLAS

n exemplul de mai sus:


Clauza SELECT specifica numele de coloane de extras
- numele angajatului, numarul angajatului si numarul departamentului, care sunt coloane
n tabelul EMP;
- numarul departamentului, numele departamentului si locatia, sunt coloane n tabelul
DEPT.
Clauza FROM specifica cele 2 tabele pe care baza de date trebuie s-o acceseze:
- tabelul EMP
- tabelul DEPT
Clauza WHERE specifica felul n care tabelele vor fi alaturate
Deoarece coloana DEPTNO este comuna la ambele tabele, trebuie prefixata cu numele tabelului pentru
a evita ambiguitatea.
Calificarea numelor de coloane ambigui

Folositi prefixele tabelelor pentru a califica numele coloanelor din mai multe tabele
mbunatatiti performanta prin folosirea prefixelor de tabele
Distingeti coloanele care au nume identice n tabele diferite prin folosirea aliasurilor
de coloane.
Trebuie sa calificati numele coloanelor n clauzele WHERE cu numele tabelului pentru a evita
ambiguitatea. Fara prefixurile tabelelor, coloana DEPTNO ar putea fi din tabela DEPT sau EMP. Este
necesar adaugarea prefixului de tabel pentru a executa interogarea.
Daca nu sunt nume de coloane comune ntre cele doua tabele, nu este nevoie calificarea coloanelor.
Oricum, veti castiga performanta mai mare prin folosirea prefixului de tabel deoarece se cere
Serverului Oracle exact unde sa gaseasca coloanele.
Cererile de calificare a numelor de coloane ambigui sunt de asemenea aplicabile la coloanele care
pot fi ambigui n alte clauze cum ar fi SELECT sau ORDER BY.
Conditii de cautare aditionale folosind opeatorul AND
EMP
EMPNO ENAME
7839 KING
7698 BLAKE
7782 CLARK
7566 JONES
7654 MARTIN
7499 ALLEN
7844 TURNER
7900 JAMES
7521 WARD
7902 FORD
7369 SMITH
...
14 rows selected.

DEPT
DEPTNO
10
30
10
20
30
30
30
30
30
20
20

DEPTNO DNAME
10 ACCOUNTING
30 SALES
10 ACCOUNTING
20 RESEARCH
30 SALES
30 SALES
30 SALES
30 SALES
30 SALES
20 RESEARCH
20 RESEARCH
...
14 rows selected.

LOC
NEW YORK
CHICAGO
NEW YORK
DALLAS
CHICAGO
CHICAGO
CHICAGO
CHICAGO
CHICAGO
DALLAS
DALLAS

In plus la join, puteti avea criterii aditionale pentru clauza WHERE. De exemplu, pentru a afita
numarul de angajat al angajatului KING, numele, numarul departamentului si locatia departamentului,
este nevoie de o conditie n plus n clauza WHERE.
SQL> SELECT
2 FROM
3 WHERE
4 AND
EMPNO
7839

empno, ename, deptno, loc


emp, dept
emp.deptno=dept.deptno
INITCAP(ename) = 'King' ;

ENAME
KING

DEPTNO
10

LOC
NEW YORK

Folosirea de Aliasuri la Tabele


Simplificati interogarile folosind aliasurile de tabele
SQL> SELECT
2
3 FROM
4 WHERE

emp.empno, emp.ename, emp.deptno,


dept.deptno, dept.loc
emp, dept
emp.deptno=dept.deptno;

SQL> SELECT
2
3 FROM
4 WHERE

e.empno, e.ename, e.deptno,


d.deptno, d.loc
emp e, dept d
e.deptno=d.deptno;

Atasarea numelor coloanelor cu numele tabelului poate consuma mult timp, mai ales daca numele
tabelului este lung. Se pot folosi aliasuri de tabele n locul numelor tabelelor. Asa cum un alias de
coloana da unei coloane un alt nume, un alias de tabel i da acestuia alt nume. Aliasurile de tabel ajuta
la mentinerea codului SQL mai mic, si astfel folosirea mai putina a memoriei.
De notat faptul cum aliasurile de tabel sunt identificate in clauza FROM n exemplul de mai sus.
Numele tabelului este specificat pe de-a ntregul, urmat de un spatiu si apoi aliasul. Tabelul EMP i-a
fost dat un alias E, iar tabelul DEPT are un alias D.
Observatii:
Aliasurile de tabel pot avea pna la 30 caractere lungime, dar cu ct sunt mai scurte cu att mai
bine;
Daca aliasul unui tabel este folosit pentru un nume de tabel particular n clauza FROM, atunci acel
alias de tabel trebuie sa fie substituitentul pentru numele tabelului pe tot cuprinsul expresiei
SELECT;
Aliasurile de tabel ar trebui sa aiba sens;
Aliasul de tabel este valid numai pentru SELECT-ul curent.

JOIN folosind mai mult de 2 tabele


CUSTOMER

ORD

NAMECUSTIDJOCKSSPORTS100
NAMECUSTIDJOCKSSPORTS100
TKB SPORT
TKB SPORT
SHOP101VOLLYRITE102JUST
SHOP101VOLLYRITE102JUST
TENNIS103K+T
TENNIS103K+T
SPORTS105SHAPE
SPORTS105SHAPE
UP106WOMENS SPORTS107......9
UP106WOMENS SPORTS107......9
rows selected.
rows selected.

CUSTIDORDID100610101611102
CUSTIDORDID100610101611102
612103601105602106107...21
612103601105602106107...21
rows selected.
rows selected.

ITEM

ORDIDITEMID610361116
ORDIDITEMID610361116
12160116021...64 rows
12160116021...64 rows
selected.
selected.

Conditii de cautare aditionale


Uneori este nevoie de alaturat (join) mai mult de doua tabele. De exemplu, pentru a afisa numele,
plasarea n ordine, numerele item-urilor, totalul fiecarui item, si totalul pentru fiecare ordin pentru
clientul TKB SPORT SHOP, va trebui alaturate (join) tabelele CUSTOMER, ORD si ITEM.
SQL> SELECT
2 FROM
3 WHERE
4 AND
5 AND

c.name, o.ordid, i.itemid, i.itemtot, o.total


customer c, ord o, item i
c.custid = o.custid
o.ordid = i.ordid
c.name = 'TKB SPORT SHOP';

NAME
TKB SPORT SHOP
TKB SPORT SHOP
TKB SPORT SHOP

ORDID
610
610
610

ITEMID
3
1
2

ITEMID
58
35
8.4

TOTAL
101.4
101.4
101.4

Non-echijoin-uri
EMP
EMPNO ENAME
7839 KING
7698 BLAKE
7782 CLARK
7566 JONES
7654 MARTIN
7499 ALLEN
7844 TURNER
7900 JAMES
...
14 rows selected.

SAL
5000
2850
2450
2975
1250
1600
1500
950

GRADE
1
2
3
4
5

LOSAL
700
1201
1401
2001
3001

HISAL
1200
1400
2000
3000
9999

"salarul din tabelul EMP este ntre salarul


minim si maxim in tabelul SALGRADE"

Relatia dintre tabelul EMP si SALGRADE este un non-echijoin, adica nici o coloana din tabelul
EMP nu corespunde direct unei coloane n tabelul SALGRADE. Relatia dintre cele doua tabele este
7

astfel: coloana SAL din EMP este ntre coloanele LOSAL si HISAL din tabelul SALGRADE. Relatia
(legatura) se obtine folosind un operator, altul decat egal (=).
Extragerea inregistrarilor cu Non-echijoin-uri
SQL> SELECT
2 FROM
3 WHERE
4 BETWEEN

e.name, e.sal, s.grade


emp e, salgrade s
e.sal
s.losal AND s.hisal;

ENAME
JAMES
SMITH
ADAMS
...
14 rows selected

SAL
950
800
1100

GRADE
1
1
1

Exemplul de sus creeaza un non-echijoin pentru a evalua gradul salarului unui angajat. Salarul
trebuie sa fie ntre orice pereche "cel mai mic" - "cel mai mare" a intervalelor salariale.
Este important de remarcat ca toti angajatii apar exact o data cnd aceasta interogare este executata.
Nici un angajat nu este repetat in lista. Sunt doua motive pentru aceasta:
Nici o linie din tabelul cu gradele salariale nu contine grade care se suprapun (cu valorile
pentru alte grade). Astfel, valoarea salarului unui angajat poate oscila numai ntre salariul
minim si maxim din una din linii in tabelul gradelor salariale.
Toate salariile angajatilor sunt ntre limitele date de tabelul gradelor salariale. Astfel, nici un
angajat nu cstiga mai putin dect cea mai mica valoare din coloana LOSAL sau mai mult
dect cea mai mare valoare continuta n coloana HISAL.
Observatie: Alti operatori, cum ar fi <= si >= pot fi folositi, dar este mai simplu de folosit BETWEEN.
Amintiti-va sa specificati valoarea minima nti si valoarea maxima atunci cnd folositi BETWEEN.
Aliasurile de tabele au fost specificate din motive de performanta, si nu datorita unei posibile
ambiguitati.
Join-uri externe
DEPT

EMP
ENAME
KING
BLAKE
CLARK
JONES
...

DEPTNO
10
30
10
20

DEPTNO
10
30
10
20
...
40

DNAME
ACCOUNTING
SALES
ACCOUNTING
RESEARCH
OPERATIONS

Nici un angajat n departamentul OPERATIONS


Returnarea inregistrarilor cu NoDirectMatch (Portivire Indirecta) cu Joinuri externe.

Daca o linie (nregistrare) nu satisface conditia de join, acea linie nu va aparea n rezultatul interogarii.
De exemplu, n conditia de echijoin a tabelelor EMP si DEPT, departamentul OPERATIONS nu va
aparea pentru ca nimeni nu lucreaza n acel departament.
ENAME
KING
BLAKE
CLARK
JONES
...
ALLEN
TURNER
JAMES
....
14 rows selected

DEPTNO
10
30
10
20
30
30
30

DNAME
ACCOUNTING
SALES
ACCOUNTING
RESEARCH
SALES
SALES
SALES

Outer Joins
Folositi un join extern pentru a vedea de asemenea linii care nu indeplinesc conditia de join
Operatorul join extern este semnul plus (+).
SELECT
FROM
WHERE

table.column, table.column
table1, table2
table1.column(+) = table2.column;

SELECT
FROM
WHERE

table.column, table.column
table1, table2
table1.column = table2.column(+) ;

Returnarea nregistrarilor cu potrivire indirecta cu ajutorul joinului extern


Linia (liniile) lipsa pot fi returnate daca un join extern este folosit in conditia join. Operatorul este un
semn "plus" ntre paranteze (+), si este plasat n "aria" lui join ceea ce e deficient n informatie. Acest
operator are efectul crearii a unei sau mai multe linii goale (nule), pentru fiecare linie din tabelul
nondeficient care poate fi facut join.
n sintaxa:
table1.column =
este conditia care face join la tabele
table2.column(+) este simbolul pentru join extern; poate fi plasat in
oricare parte a conditiei clauza WHERE, dar nu n ambele parti deodata.
Plasati simbolul join extern dupa numele coloanei din tabelul deficitar in
informatii.
Folosirea Join-urilor Externe
SQL> SELECT e.ename, d.deptno, d.dname
2 FROM
emp e, dept d
3 WHERE e.deptno(+) = d.deptno
4 ORDER BY e.deptno ;
ENAME
KING
CLARK
...

DEPTNO
10
10
40

DNAME
ACCOUNTING
ACCOUNTING
OPERATIONS

15 rows selected
9

Exemplul de mai sus afiseaza numere si nume pentru toate departamentele. Departamentul
OPERATIONS, care nu are nici un angajat este de asemenea afisat.
Restrictii la Join extern
Operatorul join extern poate aparea numai ntr-o singura parte a unei expresii - partea care are
informatia care lipseste. El returneaza acele linii din tabel care nu au corespondent direct in celalalt
tabel.
O conditie implicata n join extern nu poate fi operatorul IN sau sa fie lagata unei alte conditii de
operatorul OR.
Join al aceluiasi tabel
EMP (WORKER)
EMPNO
7839
7698
7782
7566
7654
7499

ENAME
KING
BLAKE
CLARK
JONES
MARTIN
ALLEN

EMP (MANAGER)

MGR

EMPNO

ENAME

7839
7839
7839
7698
7698

7839
7839
7839
7698
7698

KING
KING
KING
BLAKE
BLAKE

"MGR n tabelul WORKER este egal cu EMPNO


n tabelul MANAGER"
Uneori este nevoie de alaturat (join) un tabel cu el nsusi. Pentru a gasi numele fiecarui angajat al
unui manager este nevoie de alaturat (join) nsusi tabelul EMP. De exemplu, pentru a gasi numele
managerului lui Blake, este nevoie sa:
- gasiti pe Blake n tabelul EMP uitndu-va la coloana ENAME
- gasiti numarul managerului pentru Blake uitndu-va la coloana
MGR. Numarul managerului lui Blake este 7839.
gasiti numele managerului cu EMPNO 7893 uitandu-va la coloana ENAME.
Numarul angajatului King este 7839. Deci, King este managerul lui Blake.
n acest proces, va uitati (cautati) n tabel de doua ori. Prima data va uitati n tabel pentru a-l gasi pe
Blake n coloana ENAME si valoarea MGR este 7839. A doua oara va uitatt n coloana EMP pentru a
gasi 7839 si n coloana ENAME pentru a gasi King.
Alaturarea unui tabel cu el nsusi
SQL> SELECT worker.ename || 'works for' || manager.ename
2 FROM
emp worker, emp manager
3 WHERE worker.mgr = manager.empno
WORKER.ENAME || 'WORKSFOR' || MANAG
BLAKE works for KING
CLARK works for KING
JONES works for KING
MARTIN works for BLAKE
...
10
13 rows selected

Exemplul de mai sus alatura EMP cu el nsusi. Pentru a simula cele doua tabele n clauze FROM, se
folosesc doua aliasuri, numite WORKER si MANAGER, pentru acelasi tabel, EMP.
n acest exemplu, clauza WHERE contine join-ul care nseamna "unde numarul unui lucrator al unui
manager gaseste numarul angajatului pentru manager".
Cuprins
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;

Equijoin

Non-equijoin

Outer join

Self join

Exista feluri multiple de a alatura tabele. Firul comun, este legarea lor printr-o conditie n clauza
WHERE. Metoda pe care o veti alege se va baza pe rezultatele cerute si structurate de date folosite.
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;

Exercitii - rezumat
Alaturarea tabelelor folosind echijoin
Folosirea join-urilor externe si interne
Adaugarea conditiilor suplimentare
Exercitii 4
1. Scrieti o interogare care sa afiseze numele, numarul departamentului si numele departamentului
pentru toti angajatii.
2. Creeati un listing unic pentru toate meseriile (jobs) din departamentul 30.
3. Scrieti o interogare care afiseaza numele angajatului, numele departamentului si locatia tuturor
angajatilor care cstiga un comision.
4. Afisati numele angajatului si numele departamentului pentru toti angajatii care au un A n numele
lor. Salvati tabelul SQL ntr-un fisier numit p4q4.sql.
5. Scrieti o interogare care afiseaza numele, meseria, numarul departamentului, si numele
departamentului pentru toti angajatii care lucreaza n DALLAS.

11

6. Afisati numele angajatului si numarul lui mpreuna cu numele managerului si numarul acestuia.
Etichetati coloanele Employee, Emp#, Manager, Mgr#, respectiv. Salvati tabelul SQL ntr-un fisier
numit p4q6.sql.
7. Modificati p4q6.sql pentru a afisa toti angajatii incluznd pe King care nu are manager.
8. Creati o interogare care va afisa numele angajatului, numarul departamentului, si toti angajatii care
lucreaza n acelasi departament cu un angajat dat. Dati fiecarei coloane o eticheta expresiva.
9. Aratati structura tabelului SALGRADE. Creeati o interogare care va afisa numele, meseria, numele
departamentului, salarul, si gradul pentru toti angajatii.
10. Creeati o interogare care afiseaza numele si data angajarii pentru lucratorii angajati dupa data de
angajare a lui Blake.
11. Afisati toate numele angajatilor si datele de angajare impreuna cu numele managerilor si data lor de
angajare, pentru toti cei care au fost angajati naintea managerilor lor. Etichetati coloanele
Employee, respectiv Emp, Hiredate, Manager, si Mgr Hiredate.
12. Creeati o interogare care afiseaza numele angajatilor si salariile indicate prin asteriscuri. Fiecare
asterisc nseamna 1000 $. Sortati datele n ordine descendenta a salariilor. Etichetati coloana
EMPLOYEE_AND_THEIR_SALARIES.
ENAME
EMPLOYEE_AND_THEIR_SALARIES
KING
*************************************************
FORD
********************************
SCOTT
********************************
JONES
*******************************
BLAKE
******************************
CLARK
*************************
ALLEN
****************
TURNER
***************
MILLER
*************
MARTIN
************
WARD
************
ADAMS
***********
JAMES
********
SMITH
*******
14 rows selected.

12

Вам также может понравиться

  • Octavian Sava - Meteoritul de Aur
    Octavian Sava - Meteoritul de Aur
    Документ36 страниц
    Octavian Sava - Meteoritul de Aur
    sandu_danut_1
    Оценок пока нет
  • Pescarusul
    Pescarusul
    Документ14 страниц
    Pescarusul
    Alice Suciu
    100% (2)
  • Les 12
    Les 12
    Документ8 страниц
    Les 12
    radu4_ever
    Оценок пока нет
  • Les 14
    Les 14
    Документ12 страниц
    Les 14
    radu4_ever
    Оценок пока нет
  • Les 13
    Les 13
    Документ12 страниц
    Les 13
    radu4_ever
    Оценок пока нет
  • Les 08
    Les 08
    Документ16 страниц
    Les 08
    radu4_ever
    Оценок пока нет
  • Lectia 14
    Lectia 14
    Документ13 страниц
    Lectia 14
    Dana Lucinescu
    Оценок пока нет
  • Les 09
    Les 09
    Документ27 страниц
    Les 09
    Apetrei Ioan Cristian
    Оценок пока нет
  • Lectia 12
    Lectia 12
    Документ10 страниц
    Lectia 12
    radu4_ever
    Оценок пока нет
  • Lectia 02
    Lectia 02
    Документ14 страниц
    Lectia 02
    radu4_ever
    Оценок пока нет
  • 08 - Rut
    08 - Rut
    Документ5 страниц
    08 - Rut
    carti_gratis
    Оценок пока нет
  • 11sql Constrangeri
    11sql Constrangeri
    Документ12 страниц
    11sql Constrangeri
    PascDoina
    Оценок пока нет
  • Lectia 05
    Lectia 05
    Документ16 страниц
    Lectia 05
    radu4_ever
    Оценок пока нет
  • SQL Lab Lesson 6
    SQL Lab Lesson 6
    Документ12 страниц
    SQL Lab Lesson 6
    radu4_ever
    Оценок пока нет
  • Lectia 07
    Lectia 07
    Документ7 страниц
    Lectia 07
    radu4_ever
    Оценок пока нет
  • Lectia 10
    Lectia 10
    Документ9 страниц
    Lectia 10
    radu4_ever
    Оценок пока нет
  • Lectia 03
    Lectia 03
    Документ31 страница
    Lectia 03
    radu4_ever
    Оценок пока нет
  • Les 08
    Les 08
    Документ16 страниц
    Les 08
    radu4_ever
    Оценок пока нет
  • Lectia 01
    Lectia 01
    Документ12 страниц
    Lectia 01
    Cristina Constantinescu
    Оценок пока нет
  • Algoritmi Paraleli
    Algoritmi Paraleli
    Документ16 страниц
    Algoritmi Paraleli
    radu4_ever
    Оценок пока нет
  • Popescu, Vlad T - Vrajitoarele Grase Nu Sunt Arse Pe Rug
    Popescu, Vlad T - Vrajitoarele Grase Nu Sunt Arse Pe Rug
    Документ93 страницы
    Popescu, Vlad T - Vrajitoarele Grase Nu Sunt Arse Pe Rug
    Ene Doina
    Оценок пока нет
  • 01.procesare Distribuita
    01.procesare Distribuita
    Документ15 страниц
    01.procesare Distribuita
    ivandanko
    Оценок пока нет
  • Curs Autocad PDF
    Curs Autocad PDF
    Документ124 страницы
    Curs Autocad PDF
    Nicolae Tabirca
    Оценок пока нет
  • Asimov - in Marsport, Fara Hilda
    Asimov - in Marsport, Fara Hilda
    Документ9 страниц
    Asimov - in Marsport, Fara Hilda
    Vlad Manea
    Оценок пока нет
  • Lectia 01
    Lectia 01
    Документ12 страниц
    Lectia 01
    Cristina Constantinescu
    Оценок пока нет
  • SQL Lab Lesson 6
    SQL Lab Lesson 6
    Документ12 страниц
    SQL Lab Lesson 6
    radu4_ever
    Оценок пока нет
  • Noi NU Suntem Urmasii Romei 03 (39-72)
    Noi NU Suntem Urmasii Romei 03 (39-72)
    Документ34 страницы
    Noi NU Suntem Urmasii Romei 03 (39-72)
    Raul
    Оценок пока нет
  • Les 08
    Les 08
    Документ16 страниц
    Les 08
    radu4_ever
    Оценок пока нет
  • Lectia 01
    Lectia 01
    Документ12 страниц
    Lectia 01
    Cristina Constantinescu
    Оценок пока нет