这是我的评论/投票架构/示例数据:http://paste2.org/IkaXpcMt
phpmyadmin中的表的屏幕截图:http://i.imgur.com/EJlHkHx.png http://i.imgur.com/EBf39Rl.png
到目前为止,这是我的查询:
SELECT cid,pid,thread,name,(SELECT COALESCE(SUM(value),0)从votingapi_vote实体_类型='注释'和实体_id = c.cid)票
来自评论c
nid = 13852 AND状态= 1
ORDER BY线程DESC,投票DESC
这样可以正确地保持线程,但是正如预期的那样,投票永远不会使帖子按顺序排列。
当前结果:
我试图实现的结果将CID 5放在顶部,然后是2、26、41、22、44、42、43等
因此需要澄清的是,同一级别的评论必须按票数排序,但其回答必须紧随其后,遵循相同的逻辑。
答复将PID(父母ID)字段设置为父母的CID号。
因此,注释44和42是对注释22的答复。通过“ thread”字段也很容易识别答复。它以易于排序的方式描述了注释的级别/顺序。
最佳答案
这为我解决了。不过,我不确定这些子查询在更深的注释级别上的结果是什么。
SELECT cid,pid,thread,name,(SELECT COALESCE(SUM(value),0)从votingapi_vote实体_类型='comment'AND实体_id = c.cid)票,((SELECT COALESCE(SUM(value),0)从votingapi_vote在哪里entity_type ='comment'AND entity_id = IF(c.pid = 0,c.cid,c.pid))top_level_vote
来自评论c
nid = 13852 AND状态= 1
ORDER BY top_level_vote DESC,线程DESC
关于mysql - SQL:按投票对注释进行排序并维护线程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25894179/