我一直试图让这项工作暂时正常,但是我无法理解如何解决这个问题,希望有人可以帮助我!
我有三张桌子:
Table A
Table B
Table C
我希望从表A中获得前十名的结果,这些结果将取决于表B和表C中的信息。排名将使用以下公式:
Ranking = (COUNT(id)
from table C
WHERE c.a_id = a.id) as count_weight +
(COUNT(id)
FROM table B
WHERE b.a_id = a.id)*(count_weight*0.25) + a.views
在单词中,我希望排名等于由以下各项确定的点值:
希望我以一种可以理解的方式措辞!
谢谢!
答案 0 :(得分:2)
我认为这就是你所追求的:
SELECT a.*, COUNT(c.id) * IF(COUNT(b.id),1.25,1) + a.views AS Ranking
FROM a LEFT JOIN c ON a.id = c.a_id LEFT JOIN b ON a.id = b.a_id
GROUP BY a.id
ORDER BY Ranking DESC
LIMIT 10
如果您不想选择排名,可以将该列的公式直接放入ORDER BY子句中。