高级MySQL查询(基于其他两个表的排名结果)
我已经试着让它正常工作了一段时间了,但就是不知道该怎么做,希望这里有人能帮我 我有三张桌子:高级MySQL查询(基于其他两个表的排名结果),mysql,sql,Mysql,Sql,我已经试着让它正常工作了一段时间了,但就是不知道该怎么做,希望这里有人能帮我 我有三张桌子: Table A Table B Table C 我想根据排名从表A中获得前10名的结果,排名将取决于表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
Table A
Table B
Table C
我想根据排名从表A中获得前10名的结果,排名将取决于表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
换句话说,我希望排名等于由以下因素确定的分值:
谢谢 我想这就是你想要的:
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子句。如果可能,尝试创建sql FIDLE并举例说明您希望获得的输出示例示例数据和所需结果将真正帮助您更容易理解。非常感谢!这正是我想要的!