Oracle Join ve Subquery Örnekleri etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Oracle Join ve Subquery Örnekleri etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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;