Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Sql server Distinct sorunu

Arkadaşlar şu aşağıdaki kod normal bir kişi listesi düşünün ve puanlarıyla birlkte kullanıcılar Max. puanlarını sıralıyor... yani dielim 1. kullanıcının 60 ve 50 olmak üzere 2 puanı varsa sıralamaya 60 ı alıyor ve tüm kullanıclar böyle sıralanıyor.. Ama bir hata farkettim kullanıcının 2 tane 60 60 puanı varsa 2 sinide max. zannedip 2 sinide yazıyor.. Bunu nasıl engelleyebilirim. Şimdi Dıstınct diceksiniz.. Burda distinct'i kullanamadım nereye koysam hata aldım bi yardımcı olursanız..


select k.uniqe,k.ad,k.Soyad,skor,sure,zaman from skor s
inner join kullanici k on k.userId = s.userId
where skor = (select max(skor) as maxskor from skor where s.userId = userId) order by skor desc,sure asc
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • Supervisor adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    107 cevap - 0 soru
    group by yapmalisin
    • psygnosis adlı üyenin fotoğrafı psygnosis
      sql le pek aram yok ama denedim onu olmadı ayrıca group by yapamam çünkü

      dielim 60 puan süresi 20
      60 puan süresi 10 group by yaparsam hangisini alıcak? Bu aynı kişinin puanları
      9 yıl önce yazılmış
    • Supervisor adlı üyenin fotoğrafı Supervisor
      ornek kayit ve istedigin sonucu yazsana
      .....
      kayit
      ..
      1 ali 60 3sn
      1 ali 60 5sn
      1 ali 50 40sn
      2 veli 60 3sn
      2 veli 50 5sn
      ....


      sonuc
      1 ali 60 3n
      2 veli 60 3sn
      1 ali 60 5sn

      gibi anlamadim tablo ve sorgunu
      9 yıl önce yazılmış
    • psygnosis adlı üyenin fotoğrafı psygnosis
      Benim sorgum şuan 2 kişi örnek vereyim

      Ahmet 1.Puan 60 2. puan 50
      Mehmet 1. Puan 50 2.puan 40

      Benim sorgum sıralamayı Ahmet 60, Mehmet 50 diye sıralıyor.. yani her 2 sinin en yüksek puanlarını sıralıyor...

      Ama Dielim Ahmet her 2 puanıda 60 ise gidiyor...

      Ahmet 60, Ahmet 60, Mehmet 50 yazıyor anlatabildimmi Ahmet'in her 2 puanını yüksek puan algılayıp ikisinide yazıyor... burda yapmak istediğim puanların yanında Ahmet puanlarının sürelerinden süresi küçük olanı kıyaslayabilirsem olay çözülecek yani

      Ahmet 1.Puan 60 Süresi 60 2. Puan 60 süresi 40 Burda puanlar eşitse süresi küçük olanı kontrol etmelim sorguda nereye koyacagımı bulamadım


      En kısa özet

      Ahmet 1.Puan 60 süre 60 2.puan 50 süre40
      Mehmet 1.Puan 50 süre 40 2.puan 50 süre 30

      Çıktı Ahmet 60 süre 40
      Mehmet 50 30


      En kısa özet 1. kişinin aldıgı puanlar eşitse zamanları kıyaslayıp küçük olanı yazdıurmalıyım abi
      9 yıl önce yazılmış
    • psygnosis adlı üyenin fotoğrafı psygnosis
      en kısa özette puanları yanlış yazmışım Ahmet 60 Mehmet 50 olcak 50 ye 40 yazmışım
      9 yıl önce yazılmış
    • Supervisor adlı üyenin fotoğrafı Supervisor
      select * from
      (select * from skor order by skor desc , sure asc) as sk
      inner join kullanici as kl
      on sk.userId=kl.userId
      9 yıl önce yazılmış
    • psygnosis adlı üyenin fotoğrafı psygnosis
      abi yok bu deil bu hem çalışmadı yapmaya çalıştıgını anladım bende yapmıştım ama bu tüm analı kızlı sıralar :D hem Max puanlar olacak...


      bana şunu yaparmısın

      Ahmet 60,50 süreler 30,20 ya 2 puanı... Ahmet 60 ını Eğer Ahmet2in her 2 puanıda 60 ise süresi 20 olanı

      Mehmet 50,40 süreler 30,20 ya Mehmetin 50 sini..Eğer Mehmetin her 2 puanıda 50 ise süresi 20 olanı

      Örnek Ahmet 60,60 süre 30,20 Çıktısı 60 süre 20
      Mehmet 50,50 süre 30,20 ise çıktıısı 50 süre 20

      İnner joini boşver ona ben bakarım. sen direk böyle bi sıralama nasıl yapılır
      9 yıl önce yazılmış
    • psygnosis adlı üyenin fotoğrafı psygnosis
      Resim cekmeden olmıcak anlaşıldı...

      http://imageshack.us/photo/my-images/27/unledkkc.png/ şu linki tarayıcıya yapştır...

      abi yukarda id'si 2 olan kullanıcının puanları ve süreleri var Dikkat ettiysen 2 puanıda aynı..

      Normalde o sorgu Max puanı getiriyor... Ama 2 puanda aynı oldugu için 2 sinide yazdı

      burda süresi kucuk olanı göstericem işte bunu yapamadım Sorguyu bu şekilde düzenlermisin..
      9 yıl önce yazılmış
    • auyanik adlı üyenin fotoğrafı auyanik
      1
      select k.uniqe,k.ad,k.Soyad,skor,sure,zaman from skor s
      2
      inner join kullanici k on k.userId = s.userId
      3
      where skor >= all (select max(skor) as maxskor from skor where s.userId = userId)
      group by k.uniqe,k.ad,k.Soyad,skor,sure,zaman

      // bu şekilde denermisin
      9 yıl önce yazılmış
    • psygnosis adlı üyenin fotoğrafı psygnosis
      benim en üstte verdiğim sorgunun aynı sonucu döndürüyor.. Puanlar aynıysa süre kıyaslaması yine olmuyor... 1 kullanıcıya ait aynı 2 puanı yine ayrı ayrı yazıyor..
      9 yıl önce yazılmış
    • psygnosis adlı üyenin fotoğrafı psygnosis
      lanet olsun ya bi süresi kucuk kontrolü yaptıramadım ya
      9 yıl önce yazılmış
    • Supervisor adlı üyenin fotoğrafı Supervisor
      yine ilk dedigime geliyorsun . group by


      select userid, max(skor) as maxscore,min([time]) as zaaman
      from skor
      group by userid;
      9 yıl önce yazılmış
    • psygnosis adlı üyenin fotoğrafı psygnosis
      evet istediğim bunun gibi bi sonuc ama yine hatalı Sorgu çünkü Ben aynı puanlar arasında minimum süreli olanı istiyorum Bu sorgu ise Tüm puanlar arasında Max. Puan ve Mın süreyi getiriyor..

      Demek istediğim mesele 125 puan ve 30 süre
      120 puan ve 20 süre

      senin sorgunun üstteki maximum skoru alttakinin min süresini alıyor... İstediğim tamda bu ama puanların aynı oldugu koşulda olması gerekiyor..


      Neyse Service tarafında kaydederken kontrol ediip aynı puan varsa sadece süresini güncelleticem... başka türlü olmıcak
      9 yıl önce yazılmış
    • psygnosis adlı üyenin fotoğrafı psygnosis
      onu geçtim artık yukarda son satırda söylediğimde yardım edermisin

      Adamın önceki puanlarını kontrol etmeylim Web service teki method'ta WEb servicete adamın Id'sini

      o id'ye ait skorları getirebiliyorum

      .net tarafında Şu sql sorguysula select skor from skor where userID='2' mesela..



      2 id li kişinin puanları sırasıyla 10,20,30 olarak yukardaki sorgudan geliyor. Test'ten adam 20 puan aldı Bu puanlar içinde gezip nasıl 20 varmı diye kontrol ederim..
      9 yıl önce yazılmış

Cevaplar

  • psygnosis adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    33 cevap - 159 soru
    birde bunların arasında puanlar eşitse süreleri kıyaslatmalıyım süresii küçük olan maximum'u alsın