BİRDEN FAZLA TABLOYU İLİŞKİLENDİRMEK
JOIN -İLİŞKİLENDİR
ÖRNEK: Personel ve bölüm adlı 2 tablo bulunmaktadır.Çalışan her personel ve personelin yöneticisi ile ilişkili bilgiler nelerdir?
SELECT *
FROM personel,bölüm
WHERE personel .böl_no=bölüm.bölüm_no ;
|
ÖRNEK: JOIN (İLİŞKİLENDİR) işleminde arzu edilen(sicil,ad,soyad,böl_no,yön_s_g_n) alanların listele.
SELECT sicil,ad,soyad,böl_no,yön_s_g_n
FROM personel,bölüm
WHERE personel .böl_no = bölüm .bölüm_no;
|
SELF-JOIN: KENDİSİYLE -İLİŞKİLENDİR
TANIM:Bir tablonun kendisi ile birleştirilmesine "KENDİSİYLE-İLİŞKiLENDİR" denir.(SELF-JOIN)
SELECT A. sicil , A.ad , A.soyad,
B .ad , B.soyad , B.dog_tar.soyad,
FROM personel A , personel B
WHERE A. yon_sos_g_n =B .sosy_g_no;
NESTED SELECTS:İÇİÇE
TANIM:İç içe geçmiş SELECT(SEÇ)komutlarından oluşur.İçteki. seç komutunun bulduğu sonucu dış takı SEÇ komutumuz işlevini yerine getirmesi için kullanılır.
ÖRNEK:Parça numarası 24 olan parçayı ,projelerde kullanan çalışan personeli listele.
SELECT *
FROM personel
WHERE sosy_g_no
IN(SELECT per_s_g_no
FROM parça,proje,çalışma
WHERE pr_no = proj_no AND
proj_no =proj_no AND
par_no =24);
|
ÖRNEK: Fatih’te oturan personelin çalıştığı projelerin adlarını ve yerlerini listele.
SELECT proj_ad,yer
FROM proje
WHERE proj_no IN
(SELECT proje_no
FROM personel,çalışma per_s_g_no
WHERE sosy_g_no = per_s_g_no
AND adres LIKE "% fatih %");
|
UNION SÖZCÜĞÜ:
UNION -BİRLEŞİM
TANIM:İki ayrı SEÇ komutunun sonucunda elde edilen tabloların birleşimi işlemini gerçekleştirir.
ÖRNEK: Fatih’te oturan personelin çalıştığı projelerin adlarını ve yerlerini listele.
(SELECT proj_ad,yer
FROM proj,bölüm,personel
WHERE bl_no=bölüm_no AND
y_sos gno = sosy_g_no
AND ad ="Ahmet"AND soyad ="Caner")
UNION (SELECT proj_ad,yer
FROM proje,çalışma,personel
WHERE proj_no = proje_no AND
Per_s_g_no = sosy_g_no AND ad ="Ahmet"
AND soyad ="Caner")
|
KOŞULLAR:
UNION (BİRLEŞİM) sözcüğü ile ,iki yada daha çok kişi SELECT (SEÇ)'in sonucu olan tabloların küme birleşimi işlemine tabi tutulması için 2 koşul gereklidir.
- SELECT (SEÇ) komutları sonucunda elde edilecek tablolar aynı sayıda kolon içermelidirler.
- Sonuç tabloları karşılıklı olarak kolonların aynı veri tipi ve aynı genişlikte olmalıdır.
ANY :HER HANGİ BİRİ
ÖRNEK:Satış bölümünde çalışan personelin her hangi birinden daha düşük maaş alan ve mühendislik bölümündeki kişileri listele.
SELECT *
FROM personel
WHERE brüt < ANY
(SELECT brüt
FROM personel
WHERE böl_no = 2) AND
böl_no =1;
|
EŞ DEĞERİ İFADE:
SELECT *
FROM personel
WHERE brüt < (SELECT MAX (brüt )
FROM personel
WHERE böl_no = 2) AND böl_no =1;
ALL:HEPSİ
ÖRNEK:Satış bölümünde çalışan ve mühendislik bölümündeki personelin hepsinden daha fazla maaş alan personeli listele.Bu örnekte satış bölümü kodu = 2 ve mühendislik bölümü kodu = 1 alınmıştır.
1)
SELECT *
FROM personel
WHERE brüt >
ALL (SELECT brüt
FROM personel
WHERE böl_no = 1)
AND böl_no = 2;
2)
SELECT *
FROM personel
WHERE brüt >
(SELECT MAX (brüt)
FROM personel
WHERE böl_no = 1)
AND böl_no =2;
|
VE ,VEYA ,DEĞİL operatörleri ile kullanılabilir.
ÖRNEK: 27 no’lu parçayı satan satıcılarla ilişkili tüm bilgileri listele.
SELECT *
FROM satıcı
WHERE EXISTS
(SELECT *
FROM par_sat
WHERE sat_no = satıcı_n
AND parça_n =27);
|
NOT EXISTS: MEVCUT DEĞİL
VE ,VEYA ,DEĞİL operatörleri ile kullanılabilir.
ÖRNEK: 27 no’lu parçayı satmayan satıcılar kimlerdir?
SELECT *
FROM satıcı
WHERE NOT EXISTS
(SELECT *
FROM par_sat
WHERE sat_no = satıcı_n
AND parça_n =27);
|
EXCEPT:FARKLI
Tablo-1 - Tablo-2 işlemi sonuç(iki kümenin farkı) elde edilecek tabloda,Tablo-1'de bulunup, Tablo-2'de bulunmayan veriler mevcut olacaktır.
ÖRNEK:Satış bölümündeki personel adlarından,mühendislik bölümünde bulunmayanları listele.
SELECT * FROM
(SELECT ad FROM personel
WHERE bol_no=1
EXCEPT
SELECT ad FROM personel
WHERE bol_no =2);
|
INTERSECT:
ÖRNEK: Hem Ankara’da,hem de İstanbul’daki projelerde görev alan bölümleri listele.
SELECT * FROM
(SELECT bl_no FROM proje
WHERE yer LIKE "%Ankara%"
INTERSECT
SELECT bl_no FROM proje
WHERE yer LIKE "%İstanbul%");
|
SAVE TO TEMP:
ÖRNEK: Bayan personeli,bayan adlı bir tablo içinde sakla.
SELECT *
FROM personel
WHERE cins =.F. SAVE TO TEMP bayan;
|
KEEP:KALICI
SELECT *
FROM personel
WHERE cins = .F.
SAVE TO TEMP bayan KEEP;