现在数据库中有一个paper表,里面有id,title,year三个字段,现在我想按year分类,把他们输出到表格。最终效果如下:
2008年    2009年   2010年   2011年
title0    title0   title0   title0
title1    title1   title1   title1
title2    title2   title2   title2
title3    title3   title3   title3
title4    title4   title4   title4数据库查询语句应该怎么写,然后再怎样循环输出到表格?

解决方案 »

  1.   

    这个简单点法子就是直接将数据读取出来,然后对数据进行一下处理,如果用SQL来完成分类操作,会影响性能,
      

  2.   

    试试这样行不? 里面<tr></tr>换行的部分需要完善
    SELECT year FROM paper WHERE 条件 GROUP BY year ORDER BY year ASC;
    取出year
    例如: $arr_year=array('2008','2009','2010','2011',);SELECT title,year FROM paper WHERE 条件 ORDER BY title ASC,year ASC;
    这样取出的数据应该是这样的:
    $data=array(
    0=>array('title'=>'title0','year'=>'2008'),
    1=>array('title'=>'title0','year'=>'2009'),
    2=>array('title'=>'title0','year'=>'2010'),
    3=>array('title'=>'title0','year'=>'2011'),
    4=>array('title'=>'title1','year'=>'2008'),
    5=>array('title'=>'title1','year'=>'2009'),
    6=>array('title'=>'title1','year'=>'2010'),
    ....
    );
    <table>
    <tr>
    <?php
    foreach($arr_year as $year)
    {
        echo '<td>'.$year.'年</td>';
    }
    ?>
    </tr><tr>
    <?php
    $i=1;
    foreach($data as $r)
    {
        foreach($arr_year as $year)
       {
          if($year==$r['year'])
          {
             echo '<td>'.(empty($r['title'])?'&nbsp;':$r['title']).'</td>';
             break;
          }
       }
       if($i%count($arr_year)==0) echo '</tr><tr>';
       $i++;
    }
    ?>
    </tr>
    </table