首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

Sql循环查询(急),高手帮帮忙,该如何解决

2012-02-08 
Sql循环查询(急),高手帮帮忙我循环读取新闻,有两个表,类别表和新闻表class: c_id,C_namenews:n_id,n_name,

Sql循环查询(急),高手帮帮忙
我循环读取新闻,有两个表,类别表和新闻表
class: c_id,C_name

news: n_id,n_name,c_id

我现在的要求是读出类别名称和下面的20条新闻

我之前是这样写的

select c_id,c_name From class
  do while not rs.eof
 读出名字:rs("c_name")
  "select top 20 n_name from new where c_id="&rs("c_id")
  do while Not N_Rs.Eof
  读出新闻
  n_rs.movenext
  loop
  rs.movenext
  loop
这样写是最笨的 现在数据量大了 要多读好多条Sql 语句 数度很慢 有好点的查询方法吗??
在线等 急啊。。。。

 

[解决办法]

SQL code
select a.* from (  select c_name,n_name from class,news where class.c_id = news.c_id) a where n_name in (select top 20 n_name from   (     select c_name,n_name from class,news where class.c_id = news.c_id  ) b where c_name=a.c_name ) order by a.c_name,a.n_name
[解决办法]
--每個類別下的20條?

select a.C_name,b.n_name from class a,news b
where a.c_id=b.c_id
and b.n_id in (select top 20 n_id from news where c_id=a.c_id order by n_id desc)
order by a.c_name,b.n_id desc
[解决办法]
SQL code
select n_id, n_name, C_name from (select * from news N where (select count(1) from news where c_id=N.c_id and n_id>N.n_id)<20) News  join class on News.c_id=class.c_idorder by N.c_id,N.n_id desc 

热点排行