2009-08-20 36 views
9

Załóżmy, że mam stolik z karma_up i karma_down. Za każdym razem, gdy ktoś głosuje, zwiększa się karma_up i za każdym razem, gdy ktoś przegłosuje, karma_down również zwiększa. Jak mogę pobrać te wybrane wiersze i uporządkować je według sumy tych nowych wartości? ORDER BY (karma_up - karma_down) nie działa tak, jak chcę. Po prostu chcę wiersze z najwyższą karmą na górze.Zamówienie według sumy dwóch pól

+0

Ostateczny wynik to pytanie było SELECT *, CAST (karma_up - karma_down AS podpisany) AS karma_total FROM 'links' ORDER BY karma_total DESC Musiałem CAST bo byłem uzyskiwanie bardzo dużych liczb dla moich negatywnych wartości karmy. To właśnie otrzymałem za wyrejestrowanie pól karma_up i karma_down, ale CAST() było rozwiązaniem. Dzięki, dzięki! –

Odpowiedz

19

Bardzo prosty

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

OP chce najwyższego miejsca i myślę, że potrzebuje DESC, jak napisał Bill Karwin. –

+0

Dzięki. Poprawiłem moją odpowiedź: –

0

to działa? Jeśli nie, czy możesz dołączyć wyniki do swojego pytania? Zamawianie wyrażenia powinno działać zgodnie z oczekiwaniami.

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

Ouch, wysłał poprawną odpowiedź zaraz po opublikowaniu wybranej odpowiedzi. – Pachonk

+1

Wygrywasz, tracisz. Ważne jest to, że OP otrzymał odpowiedź na swoje pytanie. –

+1

Prawda, ale po prostu sympatyczny. – Pachonk

Powiązane problemy