MySQL Select Children(树/链结构)

标签 mysql

我为我的站点创建了评论,无论主题是用户、帖子、照片还是其他任何内容,这些评论都存储在一个表中。为此,我创建了一个名为 type 的列,类型分别为 0 = user1 = post2 = photo 等等。但我还决定添加回复评论的选项,并且它是不确定的。因此,我简单地向表中添加了一个 reply 列,该列包含给定评论作为回复的评论的 ID。如果要显示某个照片的评论,我会这样选择它们

SELECT `stuff` 
FROM `opinions`
WHERE `type`=2

然后,说一些评论有回复,为了得到这些我首先必须检查每个评论是否有任何回复,如果有,然后发送另一个 SQL 请求来获取回复并做同样的事情对于获取的回复等等等等,这似乎有点……错了。有人可以带领我走上正义的道路并向我展示光明吗?

表结构:

CREATE TABLE `opinions` (  
    `id` int(11) NOT NULL AUTO_INCREMENT,  
    `type` tinyint(3) unsigned NOT NULL,  
    `reply` int(11) NOT NULL,  
    `recipient` int(11) unsigned NOT NULL,  
    `sender` int(11) unsigned NOT NULL,  
    `opinion` text NOT NULL,  
    `time` int(11) NOT NULL
)

编辑:谢谢你们的帮助,但所有这些看起来都很复杂,我似乎无法理解如何实现它,因为我有无限数量的 child 和给出的大部分例子有很多 child 和东西。除非有人愿意花时间像对一个彻头彻尾的白痴一样向我解释这一点,否则我将只调用 ajax 来加载回复。

最佳答案

我认为您正在寻找类似 connect by prior in oracle 的内容,请参阅这篇文章,这应该对您有所帮助。

http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/

您也可以使用 Tree Order Traversal alghoritm(你也可以在维基百科上找到它),但它需要重新计算 leftright 值,每次你从你的表中添加/删除一些东西

关于MySQL Select Children(树/链结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18131287/

相关文章:

mysql - 一对多关系。必须是比使用子查询更好的方法

php - 获取wordpress类别中的评论总数

mysql - 定期进行网络抓取,以抓取自上次运行以来网站上的新信息

mysql - SQL中的Sum varchar字段

mysql - 如何使用jsp从数据库中删除选定的数据?

mysql - SQL 在删除前创建触发器与在删除时创建外键

java - 当 mySQL 命令为大写时,executeQuery 仅适用于查询?

php - Foreach 循环给出错误的结果

php - MySQL。从第二个表中选择最后一条记录(按创建时间)

php - 如何用php在jquery中添加删除功能?