2009-08-20 5 views
9

Haydi, karma_up ve karma_down içeren bir tablom var. Birisi bir kez oylar karma_up artar ve her zaman birileri aşağı oylar karma_down aşağı bir artırılır alır. Bunları bir dizi satırdan nasıl alabilirim ve bunları bu yeni değerlerin toplamına göre nasıl sipariş edebilirim? ORDER BY (karma_up - karma_down) istediğim gibi çalışmıyor. Sadece en üstteki karma en üstteki satırları istiyorum.İki Tarla Toplam Sipariş

SELECT 
ID, KARMA_UP, KARMA_DOWN, (KARMA_UP-KARMA_DOWN) AS USER_KARMA 
FROM KARMA 
ORDER BY USER_KARMA DESC 
+0

bu soruya nihai sonucu SEÇ *, CAST oldu negatif karma değerlerim için çok büyük sayılar elde etmek. Karma_up ve karma_down alanlarını imzalıyorum ama CAST() çözümdü. Teşekkür ederim! –

cevap

19

bu çalışır mı? Aksi takdirde, sorunuza bir sonuç ekleyebilir misiniz? Bir ifadeye göre sipariş beklendiği gibi çalışmalıdır. Çünkü ben CAST için gerekli karma_total DESC TARAFINDAN SİPARİŞ links` `DAN - (İMZA OLARAK karma_down karma_up) OLARAK karma_total

SELECT `post_id`, `karma_up`, `karma_down`, `karma_up` - `karma_down` AS `total` 
ORDER BY `total` DESC 
+0

OP en üstte en üstte yer almak istiyor ve Bill Karwin'in yayınladığı gibi DESC'ye ihtiyacı olduğunu düşünüyorum. –

+0

Teşekkürler. Cevabımı –

0

Çok basit

6
SELECT *, karma_up - karma_down AS karma_total 
FROM MyTable 
ORDER BY karma_total DESC; 
+0

Ouch olarak ayarladım, seçilen cevap gönderildikten hemen sonra doğru bir cevap gönderdim. – Pachonk

+1

Bazılarını kazanırsan, kaybedersin. Önemli olan OP'nin sorusunu cevaplamasıydı. –

+1

Doğru, ama sadece sempatik olmak. – Pachonk