10 Temmuz 2013 Çarşamba


Oracle Join ve Subquery Örnekleri


Efenim halihazırda Oracle’a alışma işlemlerimiz devam ediyor. Oracle Express ile beraber gelen HR veritabanında biraz JOIN biraz subquery işlemleri yapalım

1. Örnek: Çalışanlar arasında daha önce deneyimi olan herkesin maaşını ve maaşına %10 zam yapılmış halini isimleriyle beraber veren sorguyu yapalım :SELECT first_name "Personel", salary "Onceki Maas", (salary * 1.1) "Sonraki Maas" from employees where employee_id IN ( SELECT employee_id from job_history )





2. İsmi LEX olan çalışanı ile aynı departmanda çalışan personelin isim soyismini bulan sorgumuz :SELECT last_name, department_id FROM employees WHERE department_id = (SELECT department_id FROM employees WHERE first_name = 'Lex') ORDER BY last_name, department_id;




3. Basit bir Inner JOIN işlemini özeleyelim : Bir e bir eşit olan kayıtlar döner sonuç olarak:SELECT emp.employee_id, emp.first_name, jobs.start_date, jobs.end_date FROM employees emp, job_history jobs WHERE emp.employee_id = jobs.employee_id




4. Şimdi RIGHT OUTHER JOIN örneği yapalım. Anlamı: sağ taraftaki tablodaki değerlere karşılık sol taraftaki tablodaki değerleri getirir.
Not: Haliyle her çalışanın bu şirkette daha önce başka bir departmanda tecrübesi olmaması sebebiyle her çalışan için bir kayıt gelecek bazıları NULL görünecektirSELECT emp.employee_id, emp.first_name, jobs.start_date, jobs.end_date FROM employees emp, job_history jobs WHERE emp.employee_id = jobs.employee_id (+)




5.Şimdide LEFT OTHER JOIN yapıyor. Haliyle burada daha önce iş tecrübesi olan personel için kayıtlar döneceği için NULL sonuç göremeyeceğiz.SELECT emp.employee_id, emp.first_name, jobs.start_date, jobs.end_date FROM employees emp, job_history jobs WHERE emp.employee_id (+) = jobs.employee_id




6. Son olarak location_id si 1700 olan departmanda çalışmayan kullanıcıların isimlerini isim sıralı olacak şekilde gösterelim:SELECT first_name FROM employees WHERE department_id NOT IN (SELECT department_id FROM departments WHERE location_id = 1700) ORDER BY last_name;


0 yorum:

Yorum Gönder