首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL选择儿童(树/链结构)

MySQL选择儿童(树/链结构)
EN

Stack Overflow用户
提问于 2013-08-08 16:30:49
回答 2查看 598关注 0票数 1

我已经为我的网站创建了评论,这些评论都存储在一个表格中,而不管主题是用户、帖子、照片还是其他什么。为此,我创建了一个名为type的列,类型分别是0 = user1 = post2 = photo等。但我也决定增加对评论的答复,因为它是无限期的。因此,我简单地向表中添加了一个reply列,该列保存给定注释的ID,该注释是对其的答复。如果要显示某张照片的评论,我选择如下

代码语言:javascript
复制
SELECT `stuff` 
FROM `opinions`
WHERE `type`=2

然后,假设一些评论有回复,为了得到它们,我首先必须检查每个注释是否有任何回复,如果是,那么发送另一个SQL请求来获取回复,并对获取的回复做同样的事情等等,这似乎有点。我错了。谁能带我走正义之路,让我看看光明吗?

表结构:

代码语言:javascript
复制
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
)

编辑:谢谢你们的帮助,但这一切看起来都太复杂了,我似乎无法理解如何实现它,因为我有无限多的孩子,而给出的大多数例子都有很多孩子和其他东西。除非有人愿意花时间像对一个十足的白痴一样向我解释这一点,否则我将只需要ajax调用来加载回复。

EN

回答 2

Stack Overflow用户

发布于 2013-08-08 19:09:12

我想你是在寻找像甲骨文中的connect by prior一样的东西,看看这篇文章,这应该对你有帮助。

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

您也可以使用树序遍历 alghoritm (您也可以在维基百科上找到它),但每次向表中添加/删除某项内容时,都需要重新计算leftright值。

票数 1
EN

Stack Overflow用户

发布于 2013-08-08 19:12:41

您可以使用MPTT或也称为嵌套集表http://www.sitepoint.com/hierarchical-data-database-2/

对读取查询有利,不利于写入/更新:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18131287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档