一个栏目表 classes,
CREATE TABLE `classes` (
  `class_id` int(11) NOT NULL auto_increment,
  `class_name` varchar(255) NOT NULL default '',
    `state` bit(1) default '\0',
  PRIMARY KEY  (`class_id`)
}
一个信息表information
CREATE TABLE `information` (
  `id` int(11) NOT NULL auto_increment,
  `updatetime` timestamp NULL default CURRENT_TIMESTAMP,
  `context` text,
  `class_id` int(11) default NULL,
  PRIMARY KEY  (`id`),
) 一对多关联现在的需求是在页面上显示   classes.state为1的时候   最新的5条信息     效果图如下:我是用Struts1.3+hibernate3.2+tomcat5.5+mysql5.0开发的。SQL不是太熟悉,高手帮忙看看,指点一下!

解决方案 »

  1.   

    可能要建存储过程,对每个class_id取前5个ID,再union起来。不过每次查询都要这个SQL的话,若负载高的,是浪费资源的。
    考虑到效率的问题,用于网站的数据库设计有时是需要沉余,
    建议在classes表加个字段top_information,用于保存前5个文章,每次写新文章的时候,更新此字段,毕竟读语句比写语句来得频繁。
      

  2.   

    没有看到记录,如有唯一标识的字段的话,用SQL语句可以解决
      

  3.   

    补充一下:top_information,是用于保存前5个文章的title和联接,格式可以自己定义。也可以直接将PHP或ASP语句写在这里,不过这样有点安全性的问题。
      

  4.   

    我使用这条SQL,select i.*,c.class_name  from information i,classes c where i.class_id = c.class_id and c.state = 1 order by i.updatetime desc结果如下:
      

  5.   

    这个只是查出所有的state = 1的时候的新闻,能不能每个class_name只显示5条新闻
    2楼说的加字段top_information具体怎么保存啊,是在一个字段里保存information.id吗,那要保存5个,用标识符隔开?我不是太理解,还忘多指点以下!
      

  6.   

    TEXT字段
    1。可以直接构造html语句啊,到时直接读出来显示啊,不过要注意安全啊
    2。也可以用TAB和回车符隔离啊。
      

  7.   

    这个只是查出所有的state = 1的时候的新闻,能不能每个class_name只显示5条新闻 可以,处理过这样的问题
      

  8.   

    9楼的,能指点我一下吧,用SQL写是不是很复杂,后面是不是还要程序控制一下啊。我要做成这个的效果。
    教育培训 ,房产频道 就是 栏目表class_name,后面的新闻就是最新的5条新闻。栏目表classes结构信息表information结构
      

  9.   

    参考一下
    http://topic.csdn.net/u/20080920/15/1b4cedef-f98d-4af9-8c76-d541ade14632.html