You are on page 1of 8

Objektivat

Ne kete leksion:
Databaza nen Oracle 1. Të kuptojmë se si të marrim të dhënat nga më shumë se një
tabelë.
Shfaqja e te dhenave nga disa tabela 2. Njohja me tipet e joineve dhe vecoritë.
Tipet e JOIN-eve 3. Përdorimi I shprehjeve SELECT për të aksesuar të dhënat
nga më shumë se një tabelë duke përdorur EQUIJOINS dhe
Operatorët e bashkësisë NONEQUIJOINS
4. Bashkimi I tabelave me vetveten duke përdorur SELF-JOIN
Leksion 8 5. Përdorimi I OUTER JOINS
6. Gjenerimi I një Produkti Kartezian nga të gjithë rreshtat nga
Silvana Greca dy ose më shumë tabela
Nje pjese e materialeve mare nga oracle.com

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Marrja e të dhënave nga shumë tabela. Tipet e Join-eve

:
EMPLOYEES DEPARTMENTS
• Natural joins:
– NATURAL JOIN
– USING
… – ON
• Outer joins:
– LEFT OUTER JOIN
– RIGHT OUTER JOIN
– FULL OUTER JOIN
• Cross joins

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Join Tabelat: sintaksa Perdorimi I alias

• Perdorni emrat e tabelave si prefix per kolonat qe jane ne


disa tabela.
SELECT table1.column, table2.column • Ne vend te emrit te plote te tabelave si prefix perdor alias.
FROM table1
[NATURAL JOIN table2] | • Perdor alias per kolonat per te dalluar kolonat qe kane
[JOIN table2 USING (column_name)] | emertime identike.
[JOIN table2
ON (table1.column_name = table2.column_name)]|
[LEFT|RIGHT|FULL OUTER JOIN table2
ON (table1.column_name = table2.column_name)]|
[CROSS JOIN table2];

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

1
NATURAL JOIN Shembull: Natural Join

• Përdoret në tabela të cilat kanë kolona me të njëjtën emër.


• Bën të mundur selektimin e rreshtave nga 2 tabela që kanë SELECT department_id, department_name,
location_id, city
të njëjtat vlera në kolonat që përputhen.
FROM departments
• Nqs kolonat kanë të njëjtin emër por kanë tipe të dhënash të NATURAL JOIN locations ;
ndryshme gjenerohet një gabim.
• Ja si bëhet marrja e të dhënave me Natural Joins:

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Krijimi I Join duke përdorur shprehjen USING Join sipas emrit te kolonave

EMPLOYEES DEPARTMENTS
• Nqs disa kolona kanë të njëjtin emër por kanë tipe të
dhënash të ndryshme, mund të modifikojmë Natural Join
duke përdorur USING për të specifikuar kolonat që do të
përdoren për një Equijoin.
• USING e përdorim për të lidhur vetëm një kolonë kur më
shumë se një kolonë lidhet
• Nuk duhet të përdorim një emër tabele ose alias në kolonën
e specifikuar.
Primary key
• Natural Join dhe Using janë të dyja ekskluzive

Foreign key
UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Shembull: me shprehjen USING Perdorimi I alias te tabelave me shprehjen USING


• Mos e kualifikoni nje kolone qe perdorent ne shprehjen
USING.
• Nqs e njejta kolone eshte perdorur diku ne shprehjen SQL,
SELECT employee_id, last_name,
location_id, department_id mos I vendos alias.
FROM employees JOIN departments
USING (department_id) ; SELECT l.city, d.department_name
FROM locations l JOIN departments d
USING (location_id)
WHERE d.location_id = 1400;

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

2
Join me shprehjen ON Shembull: shprehja ON

• kushti join per natural join bazohet kryesisht ne nje equijoin


te te gjithe kolonave me te njejtin emer. SELECT e.employee_id, e.last_name, e.department_id,
• Perdorime ON per te percaktuar kushtin ose kolonat. d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id);

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Perdorimi I Joins me 3 tabela me shprehjen ON Shembuj: Aplikimi I kushteve te tjera ne nje Join

SELECT employee_id, city, department_name


FROM employees e
JOIN departments d SELECT e.employee_id, e.last_name, e.department_id,
ON d.department_id = e.department_id d.department_id, d.location_id
JOIN locations l FROM employees e JOIN departments d
ON d.location_id = l.location_id; ON (e.department_id = d.department_id)
AND e.manager_id = 149 ;

Or
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
WHERE e.manager_id = 149 ;

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Join I tabeles me vetveten Self-Joins duke perdorur shprehjen ON

EMPLOYEES (WORKER) EMPLOYEES (MANAGER) SELECT worker.last_name emp, manager.last_name mgr


FROM employees worker JOIN employees manager
ON (worker.manager_id = manager.employee_id);

… …

MANAGER_ID ne tabelen WORKER eshte I = me



EMPLOYEE_ID ne tabelen MANAGER.
UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

3
Nonequijoins Shembull: Nonequijoins

EMPLOYEES JOB_GRADES SELECT e.last_name, e.salary, j.grade_level


FROM employees e JOIN job_grades j
ON e.salary
BETWEEN j.lowest_sal AND j.highest_sal;

Tabela JOB_GRADES percakton


… rangun e vlerave LOWEST_SAL dhe
HIGHEST_SAL per cdo GRADE_LEVEL.


UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Marja e rekordeve pa perkim te drejtperdrejte me INNER vs OUTER Joins


Outer Joins
• Join I 2 tabelave qe kthen vetem rekordet qe perkojne quhet
DEPARTMENTS EMPLOYEES inner join.
• nje join midis dy tabelave qe kthen rezultatin e inner join si
edhe rekordet qe nuk perkojne nga e majta (ose e djathta) e
tabeles quhet left (ose right) outer join.
• Nje join midis dy tabelave qe kthen rezultatin e inner join si
edhe rezultatin e nje left dhe right join eshte full outer join.

Nuk ka punonjes ne
departamentin 190.

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

LEFT OUTER JOIN RIGHT OUTER JOIN

SELECT e.last_name, e.department_id, d.department_name SELECT e.last_name, e.department_id, d.department_name


FROM employees e LEFT OUTER JOIN departments d FROM employees e RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id) ; ON (e.department_id = d.department_id) ;


UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

4
FULL OUTER JOIN Produkti Kartezian

• Formohet kur:
SELECT e.last_name, d.department_id, d.department_name – Kushti join mungon
FROM employees e FULL OUTER JOIN departments d
ON (e.department_id = d.department_id) ;
– kushti join condition eshte invalid
– Te gjithe rekordet e tabeles se pare behen join me te gjithe
rekordet e tabeles se dyte

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Gjenerimi I produktit kartezian Cross Joins

EMPLOYEES (20 rows) DEPARTMENTS (8 rows) • Shprehja CROSS JOIN ben produktin kartezian te 2 tabelave.

… SELECT last_name, department_name


FROM employees
CROSS JOIN departments ;

Produkti
kartezian:
20 x 8 = 160 rows
… …

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Permbledhje

• Equijoins
• Nonequijoins
• Outer joins
• Self-joins Operatorët e bashkësisë
• Cross joins
• Natural joins
• Full outer joins

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

5
Objektiva Operatorët e bashkësisë
A B A B
Ne kete mesim:
• Operatoret e bashkesise UNION/UNION ALL
• Perdorimi I tyre
• Kontrolli I radhes se rreshtave A B

INTERSECT

A B

MINUS

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Tabelat e perdorura Operatori UNION


Kthen rekordet e kombinuara nga dy ose më shumë query, të renditura
dhe duke fshirë dublikimet
Jane:
• EMPLOYEES A B
• JOB_HISTORY

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Operatori UNION Operatori UNION ALL


Kthen rekordet e kombinuara nga dy ose më shumë query, të pa
renditura dhe duke mos fshirë dublikimet
A B

SELECT employee_id, job_id


FROM employees
UNION
SELECT employee_id, job_id
FROM job_history;

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

6
Operatori UNION ALL Operatori INTERSECT
Kthen rekordet e përbashkëta nga dy ose më shumë query, të renditura
dhe duke fshirë dublikimet
SELECT employee_id, job_id, department_id A B
FROM employees
UNION ALL
SELECT employee_id, job_id, department_id
FROM job_history
ORDER BY employee_id;


UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Operatori INTERSECT Operatori MINUS


Kthen rekordet që ndodhen në query-in e parë por jo tek të tjerat, të
renditura dhe duke fshirë dublikimet
A B

SELECT employee_id, job_id


FROM employees
INTERSECT
SELECT employee_id, job_id
FROM job_history;

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Operatori MINUS Nr I duhur I fushave te SELECT

SELECT employee_id
FROM employees
MINUS
SELECT employee_id
FROM job_history; SELECT location_id, department_name "Department",
TO_CHAR(NULL) "Warehouse location"
FROM departments
UNION
SELECT location_id, TO_CHAR(NULL) "Department",
state_province
FROM locations;

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

7
shembull

SELECT employee_id, job_id,salary


FROM employees
UNION
SELECT employee_id, job_id,0
FROM job_history;

UT-FSHN-INFORMATIKA-DATABAZA NEN ORACLE-SILVANA GRECA

Copy protected with Online-PDF-No-Copy.com


8

You might also like