1 / 23

Veritabanı Yönetim Sistemleri-I

Veritabanı Yönetim Sistemleri-I. Ders 4 Alt sorgular. Alt sorgular. Bir alt sorgu ( subquery ) bir SELECT sorgusunun içine yazılan ikinci bir SELECT sorgusudur.

Download Presentation

Veritabanı Yönetim Sistemleri-I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. Alt sorgular • Birinci durum için örnek: • Belli bir müşteriye ait (ör: 10000001 kodu müşteri) sipariş edilen ürünlerin listesini almak istenildiği durum siparisler sip_idalanı 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. 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 urunlerWHERE 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 urunlerWHERE 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.)

More Related