这有点不寻常,因此它让我觉得我做错了。我为我的网站创建了评论,这些评论都存储在一个表中,无论主题是用户,帖子,照片还是其他什么。我为此创建了一个名为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调用来加载回复。再次感谢你,当然还有+代表!
答案 0 :(得分:1)
我认为你在oracle中寻找像connect by prior
这样的东西看到这篇文章,这应该对你有帮助。
http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/
您也可以使用Tree Order Traversal alghoritm(您也可以在维基百科上找到它),但每次添加/删除某些内容时,都需要重新计算left
和right
值表
答案 1 :(得分:1)
您可以使用MPTT或也称为嵌套集表 http://www.sitepoint.com/hierarchical-data-database-2/
读取查询不利于写入/更新:)