Arama butonu
Bu konudaki kullanıcılar: 1 misafir
5
Cevap
475
Tıklama
0
Öne Çıkarma
ASP SQL Sorunu (Join)
T
12 yıl
Er
Konu Sahibi

Merhabalar;

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 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.

Üye Ol Şimdi Değil



F
12 yıl
Yarbay

Kolay gelsin.

< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi fsh77 -- 6 Ocak 2014; 19:15:11 >
Bu mesaja 1 cevap geldi.
T
12 yıl
Er
Konu Sahibi

Öncelikle ilginiz için teşekkürler.

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.





< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.
D
12 yıl
Yüzbaşı

Merhaba Dostum;
Görüntülemek İçin DataGridView Kullanıyorsan Aşağıdaki Satırlar Görünmesini İstemediğin Satırları Engelleyebilirsin:

dataGridView1.Columns["ogretmen_id"].Visible = false;

Yalnız Dikkat Etmen Gereken Bişey Var. Datagridview Dolduktan Sonra Bu Satırı Yazmalısın. Yoksa "ogretmen_id" Diye Birşey Yok Diye Hata Verir.


Bu mesaja 1 cevap geldi.
T
12 yıl
Er
Konu Sahibi

Yok üstad Grid kullanmıyorum.
Classic ASP kodlaması kullanıyorum.

Tablo içine dökülüyor satırlar.

Yine de teşekkürler


Bu mesaja 1 cevap geldi.
F
12 yıl
Yarbay

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

İstersen right ,left de onemli degil burda,Where kullan yada kullanma...
< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi fsh77 -- 7 Ocak 2014; 12:44:53 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.