这是我的评论/投票架构/样本数据: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) FROM votingapi_vote WHERE entity_type = 'comment' AND entity_id = c.cid ) votes FROM comment c WHERE nid = 13852 AND status = 1 ORDER BY thread DESC, votes DESC
这样可以正确保持线程,但正如预期的那样,投票永远不会使订单在订单中上升。
目前的结果:
结果我试图将CID 5置于顶部,然后是2,26,41,22,44,42,43等
所以要澄清一下,同一级别的评论必须按投票排序,但他们的回复必须遵循相同的逻辑。
回复将PID(父ID)字段设置为父级的CID号。 所以评论44和42是对评论22的回复。通过"线程"也很容易识别回复。领域。它以易于排序的方式描述了评论的级别/顺序。
答案 0 :(得分:0)
这为我解决了。但是,我并不完全确定这些子查询在更深层次的评论级别上的后果是什么。
SELECT cid, pid, thread, name, ( SELECT COALESCE(SUM(value), 0) FROM votingapi_vote WHERE entity_type = 'comment' AND entity_id = c.cid ) votes, ( SELECT COALESCE(SUM(value), 0) FROM votingapi_vote WHERE entity_type = 'comment' AND entity_id = IF(c.pid=0, c.cid, c.pid) ) top_level_vote FROM comment c WHERE nid = 13852 AND status = 1 ORDER BY top_level_vote DESC, thread DESC