2011-02-07 125 views
1

如果我有一个表如下抓取结果和子结果在1查询PHP/MySQL的

id | mother_id | subject | date 
1 | 0 | test1 | 122344 
2 | 0 | test2 | 122335 
3 | 1 | reply1totest1 | 122499 
4 | 1 | reply2totest1 | 122734 
5 | 2 | reply1totest2 | 126887 

而且我想PHP生成HTML这将是这样的:

reply1totest1 
- reply1totest1 
- test1 
reply1totest2 
- test2 

什么我想说的是,我希望他们聚集在一起,但最后的回复是最高的。也想这样做在1查询,因为我可以做到这一点,然后扭转查询,但我想做的很好,整齐,1查询...

+0

你最好执行2个分离的查询。这种排序可能有点棘手,而且性能不高。 – zerkms 2011-02-07 02:45:36

+0

事情是,它不会是2个查询,它将是1,它会选择所有mother_id为0的地方,然后在所有这些结果上进行搜索并选择其中mother_id是结果ID的子项。 – renevdkooi 2011-02-07 02:47:22

回答

-2

1查询将是不可能的,因为检索本身会需要多个查询。你有没有检出加入? tigzag引用它很好,只是谷歌它! :)

0

我必须说,表结构不允许一个单一的查询,我的意思是2查询(选择(选择)),因为这不是一个单一的查询,有一个缺失的关键识别所有项目从一个线程,所以你必须抓取thorw分层设计。

我想我们留下了一些问题。

难道你不能修改thable结构吗?和/或插入方法? - 我虽然没有,因为你要求解决这类问题。

我想出一个假想的单个查询,以防万一没有“回复回复”,首先你要运行该SQL语句

update 'table' set mother_id=id where mother_id=0; 

接下来,您可以通过

做排序查询
select mother_id,subject from 'table' order by mother_id asc,id desc 

我加上“身份证”的查询,以便您可以循环到数组结果当值的变化做视觉呈现检测

我希望它有助于一点