表categories(类别)和topic(主题),一个类别有多个主题,对应关系是1:n;
我要实现的功能是:实现查询,在表单上显示,一个category对应一个最新创建的topic
例如:
category     last topic
computer      topic01 (ps:这个按时间顺序排列是最新的)
在thinkphp上,以下是我的查询,我用原生sql,感觉明显是错误的,出现的问题是,一个category没有对应到一个最新的topic_subject(这个是主题的名字)$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");          

解决方案 »

  1.   

    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
      

  2.   

    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
      

  3.   

    参考下贴中的多种方法http://blog.csdn.net/acmain_chm/article/details/4126306
    [征集]分组取最大N条记录方法征集,及散分....