gpt4 book ai didi

mysql - SQL:按投票对评论进行排序并维护线程

转载 作者:行者123 更新时间:2023-11-29 23:46:43 24 4
gpt4 key购买 nike

这是我的评论/投票架构/示例数据: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 ) votesFROM comment cWHERE nid = 13852 AND status = 1ORDER BY thread DESC, votes DESC

这可以正确维护线程,但正如预期的那样,投票永远不会使帖子按顺序上升。

当前结果:

Current result

我试图实现的结果将 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) 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

关于mysql - SQL:按投票对评论进行排序并维护线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25894179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com