Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
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.)
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.