Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

2 tablodan karşılaştırıp nasıl veri çekebilirim?

Konu, 'SQL' kısmında uyksuz tarafından paylaşıldı.

Etiketler:
  1. mermer

    mermer Üye

    Kayıt:
    6 Haziran 2017
    Mesajlar:
    48
    Beğenilen Mesajlar:
    4
    Şehir:
    istanbul
    yanlız internet arayüzünü bilmiyorum, daha sonra kullanıcı hatalı yanıtladığı soruları ve yanıtlamadığı soruları görmek istediğinde 0 işaretlenenler için bu soruyu yanıtlamamışsınız uyarısı koyman gerekir. böyle bir şık olmayacağı için soru ve yanıtı sorguladığında eğer yanıt 0 ise, "siz bu soruyu yanıtlamadınız" demen gerekir. eğer 0 dışında bir şık işaretlenmişse hatalı işaretlenen şıkkı gösterebilirsin.

    en nihayeti, şunu yapmamışsın

    tablolarını tasarlarken verdiği yanıt kısmını null deseydin bu işleme gerek kalmazdı

    o vakit sistem yanıtlanmamış yanıt için otomatik null diyecekti

    verdiği Yanıt - doğru Yanıt
    null ---------------- b

    gibi

    sen de herhangi bir işlem yapmak zorunda kalmayacaktın. 0 diye bir şık da olmayacaktı.

    create table yanıt

    derken

    verdiği yanıt char(1) null

    diyebilirsen sistem otomatik null olarak bırakacak yanıt kısmını.
     
  2. uyksuz

    uyksuz Yeni Üye

    Kayıt:
    31 Mayıs 2017
    Mesajlar:
    18
    Beğenilen Mesajlar:
    0
    Şehir:
    ankara
    Şu an yok abi burada tıkanıp kaldım zaten ben hobi olarak yapıyorum bu işi hemde tamamlarsam insanlara bir yardımı dokunur mantığı ile uğraşyorum puanlama sistemi yapmak istiyorum ama şu şekil mesela konu konu geçti kaldı seçeneği olucak mesela soruların %90'ı doğruysa o konu tamamlanmış veya tamamlanmamış şeklinde ben bunu halledemedim o nasıl olucak hiçbir fikrim yok ama bunu yapmayı istiyorum :)
     
  3. mermer

    mermer Üye

    Kayıt:
    6 Haziran 2017
    Mesajlar:
    48
    Beğenilen Mesajlar:
    4
    Şehir:
    istanbul
    int konuIcerisindekiToplamSoruSayısı = select count(id) from yanit where kullanıcıID = @KullanıcıID

    int konuIcerisindeDoğruYanıtlananSoruSayısı = select count(id) from yanit where kullanıcıID = @KullanıcıID
    AND (dogruCevap = verilenCevap)

    int basariYüzdesi = konuIcerisindeDoğruYanıtlananSoruSayısı / konuIcerisindekiToplamSoruSayısı;

    if ( basariYüzdesi <= 0.9)
    (
    "konuyu yüzde 90 doğru yanıtladınız"
    )
     
    uyksuz bunu beğendi.
  4. uyksuz

    uyksuz Yeni Üye

    Kayıt:
    31 Mayıs 2017
    Mesajlar:
    18
    Beğenilen Mesajlar:
    0
    Şehir:
    ankara
    Bunu bir yere kayıt edicem sonra kullanmak için :) Abi ajax ile gönderiyordum ya cevapları kullanıcının işaretlemediği soruları nasıl NULL olarak göndericez ajax ile :) Normal POST olarak mı yollamalıyım :)
     
  5. mermer

    mermer Üye

    Kayıt:
    6 Haziran 2017
    Mesajlar:
    48
    Beğenilen Mesajlar:
    4
    Şehir:
    istanbul
    şimdi senin bazı tasarım hataların var önceden söylediğim gibi, sen sadece yanıtladığı soruları işaretliyorsun, dolayısı ile null değil, 0 (sıfır) işaretlemen gerekir.

    kullanıcı bir şıkkı işaretlediğinde nasıl şıkkı (a ya da b) gibi gönderiyorsan, yanıtlamadığı zaman da sanki şıkkı seçmiş gibi, 0 şıkkını göndermen gerekecek.
     
  6. uyksuz

    uyksuz Yeni Üye

    Kayıt:
    31 Mayıs 2017
    Mesajlar:
    18
    Beğenilen Mesajlar:
    0
    Şehir:
    ankara
    şıkkı göndermesi için bir şıkkı işaretlemesini ihtiyac duyuyorum ama burda adam işaretlemezse kodu tetikleyecek birşey yok :(
     
  7. mermer

    mermer Üye

    Kayıt:
    6 Haziran 2017
    Mesajlar:
    48
    Beğenilen Mesajlar:
    4
    Şehir:
    istanbul
    ve artı olarak sorular hangi konuya bağlı ise, ki sen soru tablosunun içerisinde bağlı olduğu konu ya da sınavı da belirtmemişsin, bu da demek oluyor ki, senin kullanıcılarının verdiği yanıt toplamı asla soru sayısı kadar olmuyor.

    bak şimdi büyük bir tasarım hatası içerisindesin.

    çünkü, kullanıcı başladı soruları yanıtlamaya, 1 den 5 e kadar ilerledi,

    1) a (doğrusu a)
    2) b (doğrusu b)
    3) a (doğrusu b)
    4) boş (doğrusu c)
    5) b (doğrusu b)

    şimdi soru sayısı (konunun ya da sınavın soru sayısı) 30. iyi tamam sen boş olan soruları da artık not alıyorsun. ama bu bir çözüm olmayacak. çünkü doğru yanıtmış sorular dışındaki soruları getir dediğinde

    where kullanıcı = @kullanıcı AND (NOT dogruyanit = yanlisyanit) dediğinde sana döndüreceği soru sayısı 2 yani sadece 3. ve 4. soruları getirecek.

    ama 30 soru vardı ?

    hep hatalı sonuç çıkacak. hatta yukarıdaki yüzde hesaplaması da çalışmayacak. doğru yöntem nasıl tasarladın bilemiyorum ama şu olmalıydı

    select id, a, b, c, d, e from soru where sınavNumarası = 15 AND (NOT id = (select id from yanit where kullanıcıID = @kulanıcıID AND (NOT dogruyanit = yanlisyanit)))

    sen 30 soruyu kapsayan sınavNumarası özelliğini belirtmediğin müddetçe, şimdi kaç soru soracaksın, hangi konu ya da hangi sınav, bu konu ya da sınavın kaç sorusu var, tümünü kapsayan şekilde where sınavNumarası demediğin müddetçe hatalı sonuç dönecek hep sana.
     
  8. uyksuz

    uyksuz Yeni Üye

    Kayıt:
    31 Mayıs 2017
    Mesajlar:
    18
    Beğenilen Mesajlar:
    0
    Şehir:
    ankara
    ABİ İNANMICAN AMA YAPTIM :D SADECE SQL SORGUSU İLE :) ÇOK MUTLU OLDUM :D

    select soru.id from soru where soru.id <> ALL (select soru.id from soru,cevap where
    soru.id = cevap.soruno
    ) union select id from soru
    where id in(select soruno from cevap
    where kid = '41' AND (NOT dcevap = vcevap))

    işe yarar değil mi kontrol edermisin abi :)
     
  9. mermer

    mermer Üye

    Kayıt:
    6 Haziran 2017
    Mesajlar:
    48
    Beğenilen Mesajlar:
    4
    Şehir:
    istanbul
    yukarıda söylemek istediğim şey, kullanıcı 5 soru yanıtladı ve yanıtlamayı bıraktı, sen yanıtladığı ve yanıtlamadığı hatta boş geçtiği soruları da getir desen gelecek soru sayısı 5...

    hani 30 soru vardı misal ?
     
  10. mermer

    mermer Üye

    Kayıt:
    6 Haziran 2017
    Mesajlar:
    48
    Beğenilen Mesajlar:
    4
    Şehir:
    istanbul
    eğer sorular bir sınav ile ya da konu ile sınırlı değilse.

    sitede toplam sorduğun sorular kaç adetle sınırlı ? yani kullanıcı 10 farklı konuda 10 * 30 = toplamda 300 soru yanıtlayacaksa çalışmaz.

    bu toplamda soru sayısı kadar soruyu getirecek bir sonuç.

    sınav ve konu bölümleri var mı sitende ?
     
  11. mermer

    mermer Üye

    Kayıt:
    6 Haziran 2017
    Mesajlar:
    48
    Beğenilen Mesajlar:
    4
    Şehir:
    istanbul
    yani o sorgu ile sen ne var ne yok bütün soruları getiriyorsun. bir sınav ya da konu şartın yok farkındaysan.
     
  12. mermer

    mermer Üye

    Kayıt:
    6 Haziran 2017
    Mesajlar:
    48
    Beğenilen Mesajlar:
    4
    Şehir:
    istanbul
    ben profesyonel soru - yanıt sitelerinde olduğu gibi düşünmüştüm :(

    bu sitelerde ne olur ? kullanıcı soruları yanıtlamaya başlar,

    ilk 10 soruyu yanıtlar, kalan 20 soru vardır, tekrar soruları yanıtlamak istediğinde 11. sorudan başlar.

    bu sorgu ile öyle bir şansın olmayacak. halbuki atladığı şıkları da not alsaydın, hangi soruda kaldığını söyleyecek, kaldığı yerden soruları yanıtlamasını sağlayacaktın.
     
  13. uyksuz

    uyksuz Yeni Üye

    Kayıt:
    31 Mayıs 2017
    Mesajlar:
    18
    Beğenilen Mesajlar:
    0
    Şehir:
    ankara
    abi onları şimdilik yazmadım ama var tabiki sorguda sınırlama Ekran Alıntısı.JPG Ekran Alıntısı2.JPG

    Bu şekilde bir plartform yaptım ona görede where ile yapabilirim değil mi eski yaptığım gibi :D onları şimdi ekleyecceğim where and and and ile :)
     
  14. uyksuz

    uyksuz Yeni Üye

    Kayıt:
    31 Mayıs 2017
    Mesajlar:
    18
    Beğenilen Mesajlar:
    0
    Şehir:
    ankara

    Abi birinin yardımı olmadan ben bunu hayatta yapamam diye düşünüyorum bu benim için çok zor :D ben bu sql sorgusu için bile 1 haftadır araştırıyorum :)
     
  15. mermer

    mermer Üye

    Kayıt:
    6 Haziran 2017
    Mesajlar:
    48
    Beğenilen Mesajlar:
    4
    Şehir:
    istanbul
    önceden söyleseydin ya :)

    o kadar uzun sorgu yazmana gerek yok o vakit :)

    select id, a, b, c, d, e from soru where id = NOT (select id from yanit where kullaniciID = @kullanıcıID)

    bu kadar :)
     
  16. mermer

    mermer Üye

    Kayıt:
    6 Haziran 2017
    Mesajlar:
    48
    Beğenilen Mesajlar:
    4
    Şehir:
    istanbul
    benim aklım uzmanlar tarafından tasarlanmış soru - yanıt sitelerine gitti :)
     
  17. mermer

    mermer Üye

    Kayıt:
    6 Haziran 2017
    Mesajlar:
    48
    Beğenilen Mesajlar:
    4
    Şehir:
    istanbul
    senin örnek gösterdiğin sorgu ve select id, a, b, c, d, e from soru where id = NOT (select id from yanit where kullanıcıID = @kullanıcıID) sorgusu ancak bir sınav / konu yok ise çalışır.

    yoksa tüm soruları getirecek. ve hatalı çalışacak.
     
  18. uyksuz

    uyksuz Yeni Üye

    Kayıt:
    31 Mayıs 2017
    Mesajlar:
    18
    Beğenilen Mesajlar:
    0
    Şehir:
    ankara
    Siteme bir göz atabilirmisin abi bir fikrin oluşur hem :)
    Soru - Portal

    abi siteye girersen kullanıcı adı : 123 şifre : 123 :) KPSS > Lise > Türkçe > sözcükte anlam > konu sınavı şeklinde soru sayfasına ulaşabilirsin :)
     
  19. mermer

    mermer Üye

    Kayıt:
    6 Haziran 2017
    Mesajlar:
    48
    Beğenilen Mesajlar:
    4
    Şehir:
    istanbul
    toplamda kaç soru var sende ?
     
  20. uyksuz

    uyksuz Yeni Üye

    Kayıt:
    31 Mayıs 2017
    Mesajlar:
    18
    Beğenilen Mesajlar:
    0
    Şehir:
    ankara
    3 soru var abi ekliycem daha fazlasını

    LG-D855 cihazımdan Tapatalk kullanılarak gönderildi