【发布时间】:2020-08-09 09:41:54
【问题描述】:
下面是我的桌子
Id User_id type content item_id secondary_item_id
879 1 activity_comment Amazing 833 833
907 168 activity_comment Great 833 879
908 1 activity_comment Welcome 833 907
我想输出一个评论回复结构,可以用一个例子来描述。在上表中,您可以看到 user_id 1 对 833 ( this is a post id ) 发表评论,然后 user 168 回复他为“很棒”,然后再次 user 1 重播给用户 168。
所以它可能像......
**MY POST** ( This is a post )
---- First comment( Amazing)
------- replay comment (Great)
------------ sub replay (Welcome )
我已经编写了以下查询,但无法获得预期的输出。
SQL 查询:
<?php
$listReplay =$wpdb->get_results("(SELECT * FROM table_one WHERE id = ".$value['secondary_item_id']." AND type ='activity_comment') UNION DISTINCT
(SELECT * FROM table_one WHERE secondary_item_id = ".$value['secondary_item_id']." AND type ='activity_comment')");
?>
【问题讨论】:
-
你有
item_id和secondary_item_id。我建议将其更新为parent_id或正在讨论的主线程和replied_to_id,这将是正在回复的评论。最后,添加一个timestamp,它会让排序变得更好。至于获得该结构的 SQL,我会推动它以更轻松地对其进行编码,只需获取数据即可。 -
对于分层数据最好使用嵌套集模型。见phpro.org/tutorials/…
标签: php mysql sql wordpress recursive-query