1

我为我的网站创建了评论,这些评论都存储在一个表格中,无论主题是用户、帖子、照片还是其他什么。为此,我创建了一个名为的列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
)

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

4

2 回答 2

1

我认为您正在寻找类似connect by priororacle 的内容,请参阅此帖子,这应该对您有所帮助。

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

您也可以使用Tree Order Traversal算法(您也可以在 wikipedia 上找到它),但是每次您在表中添加/删除某些内容时,它都需要重新计算left和值right

于 2013-08-08T19:09:12.393 回答
1

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

适合读取查询,不适合写入/更新 :)

于 2013-08-08T19:12:41.743 回答