Ik ben een beetje aan het stoeien met een query... Wat ik wil is eigenlijk heel simpel: ik wil de top 5 items weergeven... Echter moet ik hiervoor een rekensommetje doen die alles in de soep gooit.
Ik heb de volgende tabellen (die relevant zijn):

Wat ik precies wil: de titel, id en het saldo van de votes van de top5 items van de afgelopen 24 uur. Die votes moeten dus berekend worden door plusvotes - minvotes te doen. Een plusvote wordt in last_vote_type aangegeven door '0' en een minvote wordt in last_vote_type aangegeven door '1' (vraag me niet waarom het niet andersom is...).
Ik ben dus een aantal queries gaan bakken, maar geen daarvan doet wat ik wil. De volgende query bijvoorbeeld werkt alleen als ik een post_id opgeef... Als ik de post_id weghaal voegt ie alle resultaten samen waardoor ik de post_title van het populairste artikel krijg met een COUNT van alle votes van alle items die er zijn. Ik heb dit eventjes opgelost door de som van het aantal negatieve votes van het aantal positieve votes af te halen:
last_vote is hier een UNIX timestamp, die wordt normaal gesproken dynamisch berekend met PHP.
Zonder die berekening van (plusvotes - minvotes) zou het heel makkelijk zijn, want dan is het gewoon een simpele JOIN.
Ik heb de volgende tabellen (die relevant zijn):

Wat ik precies wil: de titel, id en het saldo van de votes van de top5 items van de afgelopen 24 uur. Die votes moeten dus berekend worden door plusvotes - minvotes te doen. Een plusvote wordt in last_vote_type aangegeven door '0' en een minvote wordt in last_vote_type aangegeven door '1' (vraag me niet waarom het niet andersom is...).
Ik ben dus een aantal queries gaan bakken, maar geen daarvan doet wat ik wil. De volgende query bijvoorbeeld werkt alleen als ik een post_id opgeef... Als ik de post_id weghaal voegt ie alle resultaten samen waardoor ik de post_title van het populairste artikel krijg met een COUNT van alle votes van alle items die er zijn. Ik heb dit eventjes opgelost door de som van het aantal negatieve votes van het aantal positieve votes af te halen:
SQL:
1
2
3
4
5
6
| SELECT `post_id`, COUNT(`last_vote_type`) - (SELECT SUM(`last_vote_type`) FROM `wp_votes_check` WHERE `post_id`=1252 AND `last_vote` > 1298136966) AS `count` FROM `wp_votes_check` WHERE `post_id`=1252 AND `last_vote_type`=0 AND `last_vote` > 1298136966 |
last_vote is hier een UNIX timestamp, die wordt normaal gesproken dynamisch berekend met PHP.
Zonder die berekening van (plusvotes - minvotes) zou het heel makkelijk zijn, want dan is het gewoon een simpele JOIN.