Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Veritabanı Yönetim Sistemleri-I

Benzer bir sunumlar


... konulu sunumlar: "Veritabanı Yönetim Sistemleri-I"— Sunum transkripti:

1 Veritabanı Yönetim Sistemleri-I
Ders 4 Alt sorgular

2 Alt sorgular Bir alt sorgu (subquery) bir SELECT sorgusunun içine yazılan ikinci bir SELECT sorgusudur. İç içe yazılan sorgular, aşağıdan yukarıya (veya içten dışa) doğru çalıştırılarak, her sorgunun sonucu diğer sorguya girdi olarak verilir ve en sonunda, en dıştaki sorgunun sonucu alınır Özellikle birden fazla tabloya aynı anda erişilmesi gereken durumlarda alt sorgu ile sorgulamak kolay ve hızlı sonuçlar üretebilir

3 Alt sorgular Alt sorguların genelde kullanıldığı belli başlı durumlar şunlardır WHERE .. IN anahtar kelimeleri ile bir sorgunun sonucu diğer sorguya şart olarak eklendiği durumlar WHERE … EXISTS ile sorgunun sonucu dönen kayıt olup olmadığı kontrol edilir SELECT listesine yeni sütun olarak eklenen alt sorgular

4 sip_id alanı siparişi veren müşterinin id bilgisini tutmaktadır
Alt sorgular Birinci durum için örnek: Belli bir müşteriye ait (ör: kodu müşteri) sipariş edilen ürünlerin listesini almak istenildiği durum siparisler sip_id alanı siparişi veren müşterinin id bilgisini tutmaktadır sip_edilen siparisler ve sip_edilen tabloları birbirlerine sip_num alanı ile mantıksal olarak bağlıdırlar

5 Alt sorgular Normalde bir müşteriye ait siparişi almak için gereken SQL sorgusu Bu müşteriye ait siparişlerin numaraları (sip_edilen tablosunu sorgulamak için kullanılacak)

6 Alt sorgular Az önceki sip_num bilgilerini kullanarak bu müşteriye ait siparişlerin ürünlerini sip_edilen tablosundan sorgulayabiliriz

7 2005, 2009 üretecek ve bu sonucu üst sorguya verecek
Alt sorgular Bu iki sorguyu ayrı ayrı elle yazıp, birleştirmek yerine alt sorgu mantığını kullanarak, birinci sorgunun çıktısını otomatik olarak ikinci (üst) sorguya verebiliriz 2005, 2009 üretecek ve bu sonucu üst sorguya verecek

8 Alt sorgular 2004 içinde sipariş vermiş olan müşterilerin must_ad, must_ulke bilgilerini listeleyen

9 Alt sorgular Alt sorgu yazarken dikkat edilmesi gerekenler
Alt sorgu her zaman tek bir sütun döndürmek zorundadır. Eğer alt sorgu iki sütun içerirse, hata oluşacaktır Alt sorgudan dönen sütun veri türü ile üst sorguda kıyaslanan sütun veri türü aynı veya uyumlu olmalıdır

10 Alt sorgular Alt sorgularda eşitlik kıyaslanmadığı durumlarda olabilir, böyle zamanlarda diğer SQL operatörleri de kullanılabilir >, >=, <, <=, <> gibi Fakat bu tarz kıyaslamalarda alt sorgu sadece tek bir sütun ve tek bir satır döndürmek zorundadır

11 Alt sorgular Fiyatı, ürünler tablosundaki ortalama fiyattan daha büyük olan ürünleri listeleyiniz Muhtemel kullanılacak sorgular SELECT * FROM urunler WHERE urun_fiyat > ?????? SELECT AVG(urun_fiyat) FROM urunler

12 Alt sorgular

13 Alt sorgular Benzer şekilde
En büyük fiyata sahip ürünü listelemek istersek

14 Alt sorgular WHERE ile birlikte kullanılan alt sorgular birden fazla iç içe sorguyu içerebilir Ör: “BR01” kodlu ürünü sipariş eden müşterilerin adlarını listeleyiniz. musteriler tablosu sorgusu (Verilen müşteri id’lere ait müşterlerin adlarının listelenmesi) Siparisler tablosu sorgusu (Verilen sipariş numaralarını hangi müşteri id’lerin ilişkili olduğunu tespiti) Sip_edilen tablosu sorgusu (BR01 kodlu ürünün dahil olduğu sipariş numaralarının tespiti)

15 Alt sorgular

16 Alt sorgular Alt sorguların ikinci türünde, alttaki sorgunun sonuç döndürüp döndürmemesi kontrol edilir. Bu durumda EXISTS operatörü kullanılır Eğer dönen alt sorgu sonuç içeriyorsa TRUE Sonuç içermiyorsa FALSE üreterek WHERE içinde bir şart olarak kullanılır

17 Alt sorgular Ürünler tablosunda herhangi bir ürünü bulunan satıcıların tüm bilgilerini listelemek istediğimizi düşünelim Herhangi bir satıcının (ör: DLL01 kodlu satıcı) ürünü olup olmadığını veren sorgu SELECT * FROM urunler WHERE satici_id = ‘DLL01’ Bu sorgu sonuç döndürürse ürünü var, sonuç döndürmezse ürünü yok demektir Bu sorgunun tüm satıcıları döndüren listeye adapte edilerek, satıcıların bu şarta göre listelenmesi gerekmektedir

18 Alt sorgular Alttaki sorguda satici_id üstteki tablodaki satici_id ile kıyaslanıyor (satici_id = s.satici_id) Dolayısıyla alt sorgu, üstteki tablonun her satırı için ayrı ayrı çalıştırılarak, ayrı ayrı sonuçlar üretiyor

19 Alt sorgular Benzer mantıkla, bu listenin tam tersini, yani ürünü olmayan satıcıları da NOT EXISTS ile alabiliriz

20 Alt sorgular Aynı mantıkla bulabileceğimiz Siparişi olan ve
Siparişi olmayan müşterilerin listelenmesi için gerekli sorgular

21 Alt sorgular Üçüncü alt sorgu türü
SELECT listesine ayrı bir sütun olarak alt sorguların sonucunun eklendiği durumlardır Bu durumdaki alt sorgular Tek değer (tek satır ve tek sütun) döndürmek zorundadır Herhangi bir türde değer içerebilir Bu tarz alt sorgulardan SELECT listesine istenen sayıda eklenebilir

22 Alt sorgular Her müşterinin id, ad değerleri yanında, toplam sipariş sayısını yanına yazdıralım Alt sorgu her satır için ayrı ayrı çalışacak ve COUNT(*) sonucunu üretecektir

23 Alt sorgular Her satıcının adı ve ürün sayısı, ortalama ürün fiyatı listelenmesi 1. Alt sorgu (adet) 2. Alt sorgu (ortalama fiy.)


"Veritabanı Yönetim Sistemleri-I" indir ppt

Benzer bir sunumlar


Google Reklamları