sugibiask


 

ANA SAYFA - DERSLER - SCRiPTLER - FORUM - İNDİRİM KUPONU - EN COK iNDiRiLENLER - İLETİŞİM - REKLAM

 

   ÜYE GİRİŞİ
  Kullanıcı Adı :
  Şifre :

  Beni Hatırla:
     

   EN SON 3 YENİLİK

   CAPRAZ .NET 'TE ARA





 


Dersin Adı : Subquerries ile daha kısa sql ifadeleri
Okunma : 592 Kategori :   SQL  
Eklenme Tarihi : 10/30/2004


.: DETAY :.


         

MySQL , özellikle web tabanlı projelerdeki popüleritesini her geçen gün biraz daha arttırıyor. Başlangıçta son derece basit veritabanı özelliklerini içeren MySQL yeni versiyonları ile beraber gittikçe kapsamlı bir veritabanı olmaya başladı. Yeni versiyonların en çok sevilen yada sevileceği tahmin edilen özelliklerinden birisi de SUBQUERIES (alt sorgular) Bir süredir konuşulan bu özellik MySQL'in 4.1 sürümü ile nihayet ortaya çıktı.

"Subquery"ler (yazının bundan sonraki kısmında "alt sorgular" olarak bahsedilecek) isimlerinden de anlaşıldığı gibi diğer sorguların içerisinde çalışırlar. "Alt sorgu"ların nasıl çalıştığını şimdi bir örnek ile görelim.

Aşağıdaki veritabanı tablosunun adı "ogrenci" olsun ve bir sınıftaki öğrencilerin isimleri kayıtlı olsun.

Ogrenci_ID Ogrenci_Isim Ogrenci_Soyisim
104 Ahmet Ulvi
105 Sibel Tokgöz
108 Cemal Berke
111 Deniz Altuğ

Aşağıdaki veritabanın adı da "dersler" olsun ve derslerin ID numaraları ile isimleri ve o derslere giren öğretmenlerin isimleri yer alsın.

Ders_ID Ders_ADI Ders_Ogretmen
1025 Makine Elemanları Necati Dogur
1026 Pnömatik Sistemler Selma Salman

Aşağıdaki veritabanının adı da "basarisizlar" olsun ve bu tabloda alttan alınan dersler ile ilgili bilgiler yer alsın.

BasarisizDers_ID Ders_ID Ogrenci_ID
311 1025 104
312 1025 105
313 1025 108
314 1026 108

Şimdi 108 ID numaralı Cemal Berke adındaki öğrencinin başarısız olduğu dersleri MySQL'e listeletmeye çalışalım.

mysql > select Ders_ADI from dersler where Ders_ID=(select Ders_ID from basarisizlar where Ogrenci_ID=108)

Ders_ADI
Makine Elemanları
Pnömatik Sistemler

Bu tür ifadelerde en can alıcı nokta parantezler içerisinde belirttiğimiz alt sorgu içerisinde sadece bir adet sütun adını kullanmamızdır. Şöyle bir örnek hata verecektir.

mysql > select Ders_ADI from dersler where Ders_ID=(select Ders_ID,Ogrenci_ID from basarisizlar where Ogrenci_ID=108)

ERROR 1239: Cardinality error (more/less than 1 columns)

Birden fazla alt sorguyu içiçe olarak da kullanabilirsiniz. Yukarıdaki örnekte Cemal Berke adındaki öğrencinin ID numarasını bilmediğimiz varsayarak yeni bir SQL cümlesi oluşturalım.

mysql > select Ders_ADI from dersler where Ders_ID=(select Ders_ID from basarisizlar where Ogrenci_ID=(select Ogrenci_ID from ogrenciler where Ogrenci_Isim='Cemal' AND Ogrenci_SoyIsim='Berke'))