我删除了我以前的问题,使其更易于理解。 我开发这个数据库模式的一个论坛:MySQL难以查询
ID:INT->PRIMARY-KEY->AUTO_INCREMENT
IDTOPIC:INT (0 if it is the "father" topic OR father's ID if it's a reply)
IDUSER:INT (ID of user who posted)
CONTENT:MEDIUMTEXT
DATE:TIMESTAMP
我需要按日期,下令查询哪里得到的只有最后一个线程的答复(如果没有“我是谁回答的最后一个用户”,ID用户<> $ userid)或父主题主题(如果没有回复)。 即使主题或答复的结果,我需要打印的第一线IDTOPIC/ID用户
我理想的结果应该是这样的:
ID:IDTOPIC:IDUSER:CONTENT:DATE:IDLASTREPLY:IDLASTUSERREPLY:LASTCONTENTREPLY:LASTDATEREPLY
存在,如果最后四个字段都为NULL没有问题。 我需要尽可能快的查询。 请帮帮我!
你存储帖子使用“邻接列表”,这可能不是您数据的最佳结构。您应该研究在数据库中存储分层数据的替代方法。 [这个问题](http://stackoverflow.com/questions/192220/what-is-the-most-efficient-elegant-way-to-parse-a-flat-table-into-a-tree)是一个很好的开始。 – eggyal 2012-04-25 17:19:16
但我的论坛方式与其他一些“知名”产品完全一样,例如joomla/phpBB ......他们都使用一张带有IDTOPIC或PARENT字段的表格来分割话题...... – 2012-04-25 18:38:56