MySQL’de dinamik değerli değişkenler, MySQL de değişken tanımlama

Eminim bir çok uygulama alanı olacaktır, raporlama sayfalarında veya hediye çekilişlerinde bu tarz sorguları kullanabilirsiniz.

MySQL’de sıralama puanına göre sıralı sonuç getirmek için şu queryi çalıştırın:

SELECT * FROM (

SELECT

@rn := @rn + 1 AS rank, puan

FROM oyun_puanlari JOIN (SELECT @rn := 0) r

WHERE tarih=’2014-04-26′

ORDER BY puan DESC

) AS derived_table WHERE rank = 1;

Yukardaki query ile, önce bir sıralama değişkeni atadım (@rn olarak belirliyor)
Daha sonra bu sıralama değişkenini birer birer arttırdım (@rn := @rn + 1)
Bu iki komut ile sıralamayı sağlamış oldum, böylece 1’den başlarak, resultset kadar
birer birer artan bir değerim oldu.

Daha sonra ise asıl sql sorgusunu yazdım, istediğim kriterlere göre bir sonuç sıralattım.

Örnek olsun diye bir tarih verdim ve bu tarihe ait kayıtlardan, puan kolonuna göre sıralatıp sonuçları getirdim.

Bu sorguyu derived_table adında hayali bir tabloya atıyorum ve bu tabloyuda istedigim sıraya göre yeniden sorgulatıyorum. Böylece n. sıradaki sonuçları getirebiliyorum. Üstteki sorguyu çalıştırdığınızda, birinci sıradaki kişinin puanını verecektir.

Peki 5. ile 10. sıradaki kişileri sıralamak istersek, bu durumda

“AS derived_table WHERE rank >5 AND rank < 10;”

olarak değiştirmemiz yeterli.

Oyun sunucunuz varsa ve diyelim 120. kişinin puanını göstermek istiyorsanız

WHERE rank=120

olarak değiştirebilirsiniz.

Pratik bir kod, umarım işinize yarar.