Bundan önceki tüm sorguların içerisinde yalnızca bir tablo kullanmıştık. Bu sorgular temel SQL işlevleri için birer örnekti. Bu ders ile beraber SQL in esaslı konularına giriş yapıyoruz. Gerçek hayatta ihtiyacımız olan bilgileri bize döndürecek olan sorgular çoğu zaman önceki derslerde anlatılanlar kadar basit olacak.
Veritabanları çoğu zaman birden fazla tablo içerir.Ve bu tablolar birbiri ile ilişkilidir. Örneğin aşağıdaki kitap,ogrenci,yazar,islem tablolarını inceleyelim.
Arkadaşlar isterseniz hemen örneklere geçelim
–Her ögrencinin adı soyadı ve kitabı aldıgı tarihi listeleyiniz. Kitap almayan ögrenciler de listelensin .
1 2 3 4 |
select ograd,ogrsoyad,atarih from ogrenci left join islem on ogrenci.ogrno = islem.ogrno |
–kitap okumayan öğrenciler işlem tablosunda değilde
–öğrenci tablosunda olduğu için ilk önce öğrenciyi yazıyoruz ve islem tablosuyla ilişki kuracağımız için daha sonra join ifadesini left kullanarak yazıyoruz
–kitap almayan ögrencilerin bilgilerini listeleyin
1 2 3 4 5 |
select ogrenci.* from ogrenci left join islem on ogrenci.ogrno = islem.ogrno where islemno is null |
–Her ögrencinin adı soyadı,kitabın adı ve kitabı aldıgı tarihi listeleyiniz.
— Kitap almayan ögrencileri listele.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
select ograd,ogrsoyad,kitapadi,atarih from ogrenci left join islem on ogrenci.ogrno = islem.ogrno left join kitap on islem.kitapno = kitap.kitapno --1.YÖntem select ograd,ogrsoyad,kitapadi,atarih from kitap join islem on islem.kitapno = kitap.kitapno right join ogrenci on ogrenci.ogrno = islem.ogrno --y2 select ograd,ogrsoyad,kitapadi,atarih from islem join kitap on islem.kitapno = kitap.kitapno right join ogrenci on ogrenci.ogrno = islem.ogrno --y3 |
–her ögrencinin adı soyadı kitabın adı yazarın adı soyadı kitabın türü ve kitabı aldığı tarihi
–listeleyiniz. kitap almayan ögrencileri listelensin
1 2 3 4 5 6 7 |
select ograd,ogrsoyad,kitapadi,atarih,yazarad,yazarsoyad,turadi from ogrenci left join islem on ogrenci.ogrno = islem.ogrno left join kitap on islem.kitapno = kitap.kitapno left join yazar on yazar.yazarno=kitap.yazarno left join tur on tur.turno=kitap.turno |
ikinci yol olarak da
1 2 3 4 5 6 7 |
select ograd,ogrsoyad,kitapadi,atarih,yazarad,yazarsoyad,turadi from islem join kitap on islem.kitapno=kitap.kitapno right join ogrenci on ogrenci.ogrno = islem.ogrno left join tur on kitap.turno=tur.turno left join yazar on kitap.yazarno=yazar.yazarno |
–her ögrencinin adı soyadı ve okuduğu kitap sayısını listeleyiniz. kitap okumayan
–ögrenci için sayı alanında sıfır yazdır…
1 2 3 4 5 6 7 8 9 10 11 |
select ograd,ogrsoyad,count(*) from ogrenci left join islem on islem.ogrno=ogrenci.ogrno group by ograd,ogrsoyad order by count(*) -- jale kitap okumamasına ragmen 1 kitap okumus sayar. Bu yüzden bunun yerine bu sorguyu yazabiliriz select ograd,ogrsoyad,count(islemno) from ogrenci left join islem on islem.ogrno=ogrenci.ogrno group by ograd,ogrsoyad order by count(*)-- jale hiç kitap okumamıştır.-1 |
–10a veya 10b sınıfındaki ögrencilerin adı soyadı okuduğu kitap sayısı
1 2 3 4 5 6 7 |
elect ograd,ogrsoyad, count(islemno) from ogrenci left join islem on islem.ogrno= ogrenci.ogrno where sinif='10A' or sinif='10B' group by ograd,ogrsoyad,sinif,ogrenci.ogrno order by count(*) |
gerçekten yararlı bir paylaşım aycan hanım bayıldım 🙂
işinize yaramasına sevindim esma hanım 🙂