我已经为我的网站创建了评论,这些评论都存储在一个表格中,而不管主题是用户、帖子、照片还是其他什么。为此,我创建了一个名为type的列,类型分别是0 = user、1 = post、2 = 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
)编辑:谢谢你们的帮助,但这一切看起来都太复杂了,我似乎无法理解如何实现它,因为我有无限多的孩子,而给出的大多数例子都有很多孩子和其他东西。除非有人愿意花时间像对一个十足的白痴一样向我解释这一点,否则我将只需要ajax调用来加载回复。
发布于 2013-08-08 19:09:12
我想你是在寻找像甲骨文中的connect by prior一样的东西,看看这篇文章,这应该对你有帮助。
http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/
您也可以使用树序遍历 alghoritm (您也可以在维基百科上找到它),但每次向表中添加/删除某项内容时,都需要重新计算left和right值。
发布于 2013-08-08 19:12:41
您可以使用MPTT或也称为嵌套集表http://www.sitepoint.com/hierarchical-data-database-2/。
对读取查询有利,不利于写入/更新:)
https://stackoverflow.com/questions/18131287
复制相似问题