Şimdi Ara

ASP SQL Sorunu (Join)

Koronavirüs Özel
Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
6
Cevap
0
Favori
343
Tıklama
Sayfaya Git:
Sayfa:
1
Giriş
Mesaj
  • Er
    7 Mesaj
    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..



    |
    |
    _____________________________




  • Yarbay
    5022 Mesaj
    Kolay gelsin.




    < Bu mesaj bu kişi tarafından değiştirildi fsh77 -- 6 Ocak 2014; 19:15:11 >
    |
    |
    _____________________________
    imzamı atarım,yeri gösterin + _ -




  • Er
    7 Mesaj
    Ö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.





    |
    |
    _____________________________




  • Yüzbaşı
    497 Mesaj
    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.
    |
    |
    _____________________________
  • Er
    7 Mesaj
    Yok üstad Grid kullanmıyorum.
    Classic ASP kodlaması kullanıyorum.

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

    Yine de teşekkürler
    |
    |
    _____________________________
  • Yarbay
    5022 Mesaj
    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...



    < Bu mesaj bu kişi tarafından değiştirildi fsh77 -- 7 Ocak 2014; 12:44:53 >
    |
    |
    _____________________________
    imzamı atarım,yeri gösterin + _ -
Sayfaya Git:
Sayfa:
1
Reklamlar
Bey Azura
Mobilya Takımları
Canlı Tv izle
kolayoto.com
canlı radyo dinle
Bu sayfanın
Mobil sürümü
Mini Sürümü

BR1
0,342
1.2.165

Reklamlar
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.