Eğitm Sayısı :532
AnasayfaMysql DersleriMysql Dersleri | Mysql İç İçe Sorgular

Mysql Dersleri | Mysql İç İçe Sorgular

Mysql Dersleri

Şuana kadar tek sorgu Select ifadesi kullandık  bu dersimizde iç içe istediğimiz kadar select ifadesi kullanarak . Bu şekilde diğer bir sorgudan gelen sonucu kullanarak tablolarımızda verilerimizi listeleyebiliriz bunu sadece Select de değil ,INSERT, DELETE ve UPDATE  de kullanabiliriz.

Bölümler Tablosu

bolumId bolumAd
1 Bilgisayar Öğretmenliği
2 Fizik Öğretmenliği
3 Fizik Bölümü
4 Kimya Öğretmenliği
5 Biyokimya Mühendisliği

Notlar Tablosu

notId ogrenciId dersId vize final
1 1 1 60 45
2 2 3 69 75
3 3 3 56 76
4 3 5 67 89
5 4 2 80 50
6 5 5 60 76
7 6 4 26 70
8 7 2 90 35
9 8 1 60 56
10 9 2 54 45
11 4 3 58 98

Öğrenci Tablosu

ogrenciId ad soyad okulNo bolumId
1 Mehmet Durmaz 1250 1
2 Ahmet Yıkılmaz 1452 1
3 Ayşe NULL 1656 2
4 Melek Tunc 1245 2
5 Seher Ay 2364 5
6 Şakir Yok 1025 4
7 Abbas Kırmızı 1436 3
8 Ayşe Pekmez 1237 2
9 Mert Günaydın 2563 5
10 Ahmet Şeker 2222 3

İç İçe Sorgu

Burada Bölümlerin olduğu tablo ile , Öğrencilerin olduğu tablo arasında içiçe bir sorgu oluşturduk Bölümler tablosunda “Fizik Öğretmenliği” Okuyanları getirmek istedik . Öncelikle alt sorgumuzda buradan bir sonuç dönecek . Dönecek sonuç öğrenciler tablosunda bulunan bolumId kısmıyla eşleştirerek. Kayıtları getirdik.
Not: Burada eğer Fizik Olarak arama yaptırsaydık sadece o zaman hata alacaktık . Çünkü Fizik olarak aradığımızda 2 ve 3 olarak 2 farklı bölüm Id’si gelecektir. O yüzden birden fazla farklı değer geldiği için hata alacağız bu hatayı önlemek için örnek- 2 yi inceyelim

ogrenciId ad soyad okulNo bolumId
3 Ayşe NULL 1656 2
4 Melek Tunc 1245 2
8 Ayşe Pekmez 1237 2

Örnek – 2

Yukarıda ilk where şartımızda “eşittir” ifadesi kullandığımızdan dolayı tek bir ifadeyi kabul etmiş oluyoruz yani 2. select sorgumuzdan 2 ya da 3 ya da 4 gibi bir değer 2 farklı değer gelemez. Eğer gelmesini istiyorsak “IN” ifadesini kullanmamız gerekiyor. Dikkat edilirse yeni bir kayıt geldi çünkü Fizik bölümünde okuyan bir kayıt gelmiş oldu “fizik” olarak arama yaptığımızda

ogrenciId ad soyad okulNo bolumId
3 Ayşe NULL 1656 2
4 Melek Tunc 1245 2
8 Ayşe Pekmez 1237 2
7 Abbas Kırmızı 1436 3

Örnek – 3

Bu örneğimizde biraz daha zorlaştıralım 3 tablo arasında ilişki kuralım. En dıştaki select sorgumuz MatematikId sini getirmekte bize yani oradan bize Matematik Id ‘si kaça denk geliyor onu buluyoruz.Bir içteki Select sorgumuzda ise ders tablosundan gelen Id’ye göre ogrenciId’leri bulmamızı sağlıyor . Bulduğumuz öğrenci Id’ye göre öğrenciler tablosundan istediğimiz bilgileri ekrana getiriyoruz.

ad soyad ogrenciID
Mehmet Durmaz 1
Ayşe Pekmez 8

Örnek – 4

Bu örneğimiz biraz karışık olabilir ama göstermek istediğim. Avg () fonksiyonu gibi matematik işlemlerde kullandığımız fonksiyonları da kullanabildiğimizden bahsetmek istedim. Öncelikle 2. Select sorgumuzda ogrenciId ‘ lerine göre grupladıktan sonra final notlarının ortalamasını aldık final notlarının ortalaması 50 den yukarı olan öğrenci Id’lerini bulduk buna göre öğrenci tablosuyla ilişkilendirdik.

ad soyad ogrenciID
Ahmet Yıkılmaz 2
Ayşe Null 3
Melek Tunc 4
Seher Ay 5
Şakir Yok 6
Ayşe Pekmez 8

Some Kullanımı

Bu örneğimizde Some kullanımından bahsedeceğim some da olay şu şekilde işlemekte . Notlar tablosunu inceleyecek olursak DersId =3 olan kişilerin final notlarına bakarsanız(75,76,98) olarak göreceksiniz burada en küçük değer 75 , Some en küçük değer alıp 75 den büyük kayıtları ekrana getirmemizi sağlıyor.

notId ogrenciId dersId vize final
3 3 3 56 76
4 3 5 67 89
6 5 5 60 76
11 4 3 58 98

All Kullanımı

All ise Some fonksiyonun tersi gibi düşünebilirsiniz.Notlar tablosunda dersId=5 olan kişilerin final notları(89,76) burada ise en büyük notu alarak bu nottan yüksek olan bütün nota sahip olan kayıtları getirmekte bu şarta uyan 1 kayıt olduğundan sadece tek kayıt gelmekte.

notId ogrenciId dersId vize final
11 4 3 58 98
Paylaşmak Güzeldir :)
Mysql Dersleri | Mys
Mysql Dersleri | Mys

ademyalcin27@gmail.com

Oy
Henüz yorum yapılmadı . İlk sen neden yorum yapmayasın ?

Yorum yap

CAPTCHA (Şahıs Denetim Kodu) Resmi

*