Bir okul için yazılım yazmaktayım fakat bir SQL cümlesini yazmakta sorun yaşıyorum. Öğretmenlerin her ay her öğrenci ile ilgili yazdıkları raporları kayıt altına alıyorum. Bunları da daha sonra öğretmen bazında aylık rapor almak istiyorum. Bir öğretmenin kaç öğrenci hakkında rapor yazması gerektiği öğrenci tablosunda belirleniyor. ogretmen_id alanında her öğrenciye bir öğretmen atıyorum. Bu şekilde bir öğretmenin aylık atıyorum 10 rapor yazması, diğerinin 15 rapor yazması gerekiyor. Yapamadığım nokta left join veya ona benzer bir yapıyla öğretmene ait bütün öğrencilerin listelenmesi fakat rapor yazılmayan öğrencilerin de isimlerinin gelip rapor kısmının boş olması. Şu an yaptığım kod ile bir öğretmenin 15 rapor yazması gerekirken 10 rapor yazmışsa sadece 10 rapor geliyor. Diğer 5 öğrenci bilgisi gelmiyor. Ben öğretmenin bütün öğrencileri gelsin, varsa raporu da görüntülensin, yoksa rapor kısmı boş gelsin istiyorum. Şu an kullandığım kod şu:
Select Y.okul_no,Y.ad,Y.soyad,X.rapor,x.rapor_tarihi,x.log_user from raporTBL X, ogrenciTBL Y where Y.ogretmen_id=123 and Y.rapor_donem=4 AND Y.ogrenci_id=x.ogrenci_id
Koddaki ogretmen_id ve rapor_donem alanları form üzerinde geliyor
Ancak tam istediğim bu değildi. Bu sonucu ben de elde edebiliyorum aslında. Göndermiş olduğunuz tabloları şöyle düşünün. Öğrenci Tablosunda şu an toplam 6 öğrenci kayıtlı. Ve bunlardan 3 tanesinin öğretmeni 3 nolu öğretmen. (id si 4,5 ve 6 olan öğrenciler.) Rapor tablosunda bu 3 öğrenciye ait rapor olmadığını, sadece 2 rapor olduğunu varsayalım. (6,7 ve 8 nolu raporlar) Farzedelim ki 8 nolu rapor yazılmamış.
ben sorgu sonucunda 3 nolu öğretmenin raporlarını görmek istiyorum. Öğretmenin 3 öğrencisi var, fakat 2 rapor var. Ben 3 öğrenciyi de görüp , var olan raporları görmek istiyorum.
Biraz karışık oldu sanırım ama şimdiden tekrar teşekkürler.
SELECT O.ad,O.soyad,R.rapor,R.rapor_tarihi FROM RaporTBL R RIGHT JOIN OgrenciTBL O ON R.ogrenci_ID=O.ogrenci_ID --WHERE O.ogretmen_ID=3 GROUP BY O.ogretmen_ID,O.ad,O.soyad,R.rapor,R.rapor_tarihi HAVING O.ogretmen_ID=3
Bir okul için yazılım yazmaktayım fakat bir SQL cümlesini yazmakta sorun yaşıyorum.
Öğretmenlerin her ay her öğrenci ile ilgili yazdıkları raporları kayıt altına alıyorum. Bunları da daha sonra öğretmen bazında aylık rapor almak istiyorum.
Bir öğretmenin kaç öğrenci hakkında rapor yazması gerektiği öğrenci tablosunda belirleniyor. ogretmen_id alanında her öğrenciye bir öğretmen atıyorum.
Bu şekilde bir öğretmenin aylık atıyorum 10 rapor yazması, diğerinin 15 rapor yazması gerekiyor. Yapamadığım nokta left join veya ona benzer bir yapıyla öğretmene ait bütün öğrencilerin listelenmesi fakat rapor yazılmayan öğrencilerin de isimlerinin gelip rapor kısmının boş olması. Şu an yaptığım kod ile bir öğretmenin 15 rapor yazması gerekirken 10 rapor yazmışsa sadece 10 rapor geliyor. Diğer 5 öğrenci bilgisi gelmiyor. Ben öğretmenin bütün öğrencileri gelsin, varsa raporu da görüntülensin, yoksa rapor kısmı boş gelsin istiyorum.
Şu an kullandığım kod şu:
Select Y.okul_no,Y.ad,Y.soyad,X.rapor,x.rapor_tarihi,x.log_user from raporTBL X, ogrenciTBL Y where Y.ogretmen_id=123 and Y.rapor_donem=4 AND Y.ogrenci_id=x.ogrenci_id
Koddaki ogretmen_id ve rapor_donem alanları form üzerinde geliyor
OgrenciTBL
ogrenci_id
ad
soyad
ogretmen_id.
.
.
RaporTBL
rapor_id
rapor_donem
ogrenci_id
ogretmen_id
rapor
rapor_tarihi
.
.
Bu konuda yardımcı olabilecek arkadaşlara şimdiden teşekkürler..
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.