I have the following two tables
Table: items
ID | TITLE
249 | One
250 | Two
251 | Three
And I have voting for these:
Table: votes
VID | IID | userid | votes
01 | 249 | 6 | 5
02 | 249 | 7 | -5
03 | 249 | 8 | 5
04 | 249 | 9 | 5
05 | 250 | 6 | -5
06 | 250 | 7 | -5
07 | 250 | 8 | 5
-5 means a DOWNVOTE, and +5 means an upvote. Assuming I am logged in as user 6, what SQL query will give me:
Table: result
ID | TITLE | TOTALVOTES | UPVOTES | DOWNVOTES | CURRENTUSERVOTED
249 | One | 4 | 3 | 1 | 1
250 | Two | 3 | 1 | 2 | 1
251 | Three | 0 | 0 | 0 | 0
Use
CASEexpressions within your aggregate functions: