Mevlüt Becerikli

Basit diye bir ÅŸey yok !!! Bilmeyene 2+2 bile zor…

Join - Subquery - Inline Query

Yazan: Mevlüt Becerikli Tarih: Oca 3rd, 2010 | Kategori:: SQL, Veritabanı

Bu yazımızda da JOIN, SUBQUERY ve INLINE QUERY ifadelerinin yapısal farklılıklarını birer örnek ile ele alacağız. Aşağıdaki gibi 4 tablomuz olduğunu düşünelim.

TABLO ADI SUTUN1 SUTUN2 SUTUN3 SUTUN4 SUTUN5
EMPLOYEES ID NAME D_ID JOB_ID SALARY
DEPARTMENTS D_ID LOC_ID D_NAME
LOCATION LOC_ID LOC_NAME
JOB JOB_ID JOB_TITLE

Şimdi 1800 numaralı (JOB_ID) işe için çalışan, departman, iş ve lokasyon bilgilerini bu 4 tablodan çekmek isteyelim.

JOIN : İlk aklımıza gelen ilgili anahtar alanların birbirine eşitlik durumu ile JOIN işlemi olacaktır.

SELECT d.d_name, l.loc_name,  j.job_title,  e.salary
FROM employees e,  departments d, location l, job j
WHERE e.d_id = d.d_id
AND e.job_id = j.job_id
AND d.loc_id = l.loc_id
AND e.job_id = 1800

SUBQUERY : Genel itibarı ile kendisindan başka bir SQL ifadesinin içinde parantezler içinde olan SQL ifadesidir. Bir SQL ifadesinin ya SELECT kısmında yada WHERE kısmında olur. SUBQUERY, her tablo için sadece bir kere değerlendirilir.

SELECT d.d_name, (SELECT l.loc_name FROM location l where l.loc_id = d.loc_id) , j.job_title, e.salary
FROM employees e , departments d , job j
WHERE e.d_id = d.d_id
AND e.job_id = j.job_id
AND e.job_id = 1800

INLINE QUERY (INLINE VIEW) : Eğer SUBQUERY ifadesi, ana SQL ifadesinin FROM kısmında ise buna INLINE QUERY (INLINE VIEW) diyoruz. Burada amaç kompleks bir JOIN işleminin yerine daha sade bir SQL ifade elde etmek yada birbirinden ayrık SQL ifadelerini bir SQL ifadesi içinde elde etmektir.

SELECT e.salary, j.job_title , s.d_name , s.loc_name
FROM employees e ,job j,
(SELECT d.d_name, l.loc_name, d.d_id FROM departments d , location l WHERE d.loc_id = l.loc_id ) s
WHERE e.d_id = s.d_id
AND e.job_id = j.job_id
AND e.job_id = 1800

İyi Çalışmalar…



Yorum Yapin