Yani benim linkleri ve oy tablodan çeker bu sorgu var ve ben verilerin son bir sütun gerekir. Benim oy tablo her kullanıcının oylama oluşur, bir kullanıcı sadece bağlantı başına bir kez oy ve onların oy değeri -1, 0 veya 1 ya da olduğunu. Oy tabloda User_id yabancı anahtar var ve ben bir şekilde geçerli kullanıcının oy toplamak istiyorum . Ben mevcut sorgu karmaşıklığı ikinci bir sorgu gerektirebilir hissediyorum ama ben gerçekten mümkünse önlemek istiyor. Ben sadece kullanıcının oylamasında açmış geçerli olduğunu bilmek gerekir. Bir kullanıcı sadece bir kez linke oy çünkü bir bağlantı birden fazla oy değere zorunda kalmayacaksınız.
Bir kaç not
- Tüm bağlantılar, geçerli kullanıcı tarafından en az bir oy girişi ile otomatik olarak başlar
- Bu oylama seçimini kaldırır sonra bir linke oylama Bir kullanıcı 0 delta ile bu oy girişi devam edecektir
SQL:
SELECT links.*, (SUM(votes.karma_delta)) AS karma
FROM links, votes
WHERE links.id = votes.link_id
GROUP BY votes.link_id
ORDER BY (SUM(votes.karma_delta) - 1) / POW((TIMESTAMPDIFF(HOUR, links.created, NOW()) + 2), 1.5) DESC
LIMIT 0, 100
Optimizasyonu büyük olsa da, şu anda sadece belirli bir kullanıcı tarafından karma_delta Seçilen bağlantıları almak istiyorum.