日期:2014-05-16  浏览次数:20606 次

在thinkphp上,两表连接用sql出现问题,望大家帮忙,指点一下,谢谢大家啊
表categories(类别)和topic(主题),一个类别有多个主题,对应关系是1:n;
我要实现的功能是:实现查询,在表单上显示,一个category对应一个最新创建的topic,
例如:
category last topic
computer topic01 (ps:这个按时间顺序排列是最新的)
在thinkphp上,以下是我的查询,我用原生sql,感觉明显是错误的,出现的问题是,一个category没有对应到一个最新的topic_subject(这个是主题的名字)
PHP code

$brand_row=$brand->query("select categories.cat_name,topic_subject
                                 from categories,topic 
                                 where topic_subject                           
                                 IN(
                                 SELECT topic_subject
                                 FROM
                                    topic 
                                 ORDER BY
                                    topic_date
                 DESC
                 LIMIT 1)
                                 GROUP BY
                                 categories.cat_name");          


------解决方案--------------------
select * from categories a1 left join (
select * from topic a where not exists(select 1 from topic where a.topic_subject=topic_subject
and a.topic_date<topic_date)) b1
on a1.topic_subject=b1.topic_subject
------解决方案--------------------
select * from topic a where not exists(select 1 from topic where a.topic_subject=topic_subject
and a.topic_date<topic_date)
每个category最新的一条topic
------解决方案--------------------
参考下贴中的多种方法

http://blog.csdn.net/acmain_chm/article/details/4126306
[征集]分组取最大N条记录方法征集,及散分....