|
主题: 显示指定数据库记录的问题
|
无色光芒
职务:普通成员
等级:3
金币:1.0
发贴:1071
|
#12004/11/4 18:54:10
原来用select top 25 * from song order by click desc可以正常显示。
现在想再按同样的方式显示第26--50条的记录,表达式怎么写
|
蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
|
#22004/11/4 19:10:42
SELECT TOP 25 * FROM Song WHERE Click < (SELECT MAX(Click) FROM (SELECT TOP 25 Click FROM Song ORDER BY Click DESC)) ORDER BY Click DESC 该方法如果存在并列25的情况,如果允许可以用此
如果并列25可以拆分25,26的话,就用
SELECT TOP 25 * FROM Song WHERE ID NOT IN (SELECT TOP 25 ID FROM Song ORDER BY Click DESC) ORDER BY Click DESC
非常大鱼
|
无色光芒
职务:普通成员
等级:3
金币:1.0
发贴:1071
|
#32004/11/4 20:21:17
谢谢版主,不过显示的还是1--25条。并不是26-50条
|
蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
|
#42004/11/4 20:55:13
对不起,应该是 SELECT TOP 25 * FROM Song WHERE Click < (SELECT MIN(Click) FROM (SELECT TOP 25 Click FROM Song ORDER BY Click DESC) AS Click) ORDER BY Click DESC
因为是倒排序,不应该用MAX。第二个可能更好些。
编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2004-11-04 21:59:32)]
非常大鱼
|
无色光芒
职务:普通成员
等级:3
金币:1.0
发贴:1071
|
#52004/11/4 21:10:38
为什么!为什么显示的还是1--25! www.52ting.net/in.asp我是希望能在第二列里显示26--50.怎么办
|
蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
|
#62004/11/4 21:27:02
你的SQL怎么写的?
非常大鱼
|
无色光芒
职务:普通成员
等级:3
金币:1.0
发贴:1071
|
#72004/11/4 21:30:12
SELECT TOP 25 * FROM Song WHERE Click < (SELECT MIN(Click) FROM (SELECT TOP 25 Click FROM Song ORDER BY Click DESC) AS Click) ORDER BY Click DESC
就是你说的这样啊。
编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2004-11-04 21:47:55)]
|
无色光芒
职务:普通成员
等级:3
金币:1.0
发贴:1071
|
#82004/11/4 21:31:30
<% dim rs set rs=server.createobject("adodb.recordset") sql="select top 25 * from song order by click desc" rs.open sql,conn,1,1 %> <table width="750" border="0" align="center" cellspacing="1" bgcolor="#0099FF"> <tr bgcolor="#FFFFFF"> <td height="15" colspan="4">top100</td> </tr> <%do while not rs.eof%> <% dim ss_rs set ss_rs=server.createobject("adodb.recordset") mulu=rs("name") if rs("lei")=3 then ml_sql="select mulu from data where name='Ô­´´'" elseif rs("lei")=4 then ml_sql="select mulu from data where name='µ¥Çú'" else ml_sql="select mulu from data where name='"&mulu&"'" end if ss_rs.open ml_sql,conn,1,1 dim i i=i+1 %> <tr bgcolor="#FFFFFF"> <td width="203"><font color="#990000"><strong><%=i%></strong></font> <a href="play.asp?mulu=<%=ss_rs("mulu")%>&filename=<%=rs("url")%>&id=<%=rs("id")%>" target="_blank"> <%=rs("song")%> </a><font color="#009900">(<%=rs("click")%>)</font></td> <%sql="SELECT TOP 25 * FROM Song WHERE Click < (SELECT MIN(Click) FROM (SELECT TOP 25 Click FROM Song ORDER BY Click DESC)) ORDER BY Click DESC" %> <td width="188"><font color="#990000"><strong><%=i%></strong></font> <a href="play.asp?mulu=<%=ss_rs("mulu")%>&filename=<%=rs("url")%>&id=<%=rs("id")%>" target="_blank"> <%=rs("song")%> </a><font color="#009900">(<%=rs("click")%>)</font></td> <td width="189"> </td> <td width="157"> </td> </tr> <% rs.movenext if i>=25 then exit do loop rs.close ss_rs.close set ss_rs=nothing %> </table>
|
蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
|
#92004/11/4 21:55:21
</a><font color="#009900">(<%=rs("click")%>)</font></td> <%sql="SELECT TOP 25 * FROM Song WHERE Click < (SELECT MIN(Click) FROM (SELECT TOP 25 Click FROM Song ORDER BY Click DESC)) ORDER BY Click DESC" %> <td width="188"><font color="#990000"><strong><%=i%></strong></font> <a href="play.asp?mulu=<%=ss_rs("mulu")%>&filename=<%=rs("url")%>&id=<%=rs("id")%>" target="_blank"> <%=rs("song")%>
这之后,你的rs就不打开一下,写个SQL有什么用应该 rs.open.... 一下
这是修正后的SQL SELECT TOP 25 * FROM Song WHERE Click < (SELECT MIN(Click) FROM (SELECT TOP 25 Click FROM Song ORDER BY Click DESC) AS Click) ORDER BY Click DESC
在SQL SERVER上,我已验正了代码 SELECT TOP 10 OrderID FROM Orders WHERE OrderID < (SELECT MIN(OrderID) FROM (SELECT TOP 10 OrderID FROM Orders ORDER BY OrderID DESC) AS OrderID) ORDER BY OrderID DESC
剩下的只是你的代码问题了。
非常大鱼
|
蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
|
#102004/11/4 21:58:28
另外,你这个程序应该用我第二个SQL,可以排除并列相等。
建议,你的程序完全可以先选出前100个,然后分组显示,这样效率最高。这二个SQL不应该用在这里的。
非常大鱼
|
无色光芒
职务:普通成员
等级:3
金币:1.0
发贴:1071
|
#112004/11/4 22:36:46
1,前面已经open一次了,而且是同一个表,还要再打开一次吗?
2,关于这个分组显示…………还………还不会呢。 汗ing
|
蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
|
#122004/11/4 22:48:21
当然应该打开,每次查询应该打开。SQL只是个字符串,一定要得到执行后才有效。 得好好补补数据库。 分数即是 For 1 to 25 if rs.eof then exit for '显示第一组 rs.MoveNext Next For 26 to 50 if rs.eof then exit for '显示第二组 rs.MoveNext Next ......
代码为(举例代码):
Response.Write "<table><tr>"
for i = 1 to 4 Response.Write "<td>" for j = 1 to 25 if rs.eoft then exit for ' 显示25条记录 end if rs.MoveNext next
Response.Write "</td>" next
Response.Write "</tr></table>"
表格设计可以先设计四个列,每个列插入一个显示表格,这样四个列用四个大循环,而四个列入的小表格用25个小循环。
编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2004-11-04 22:55:49)]
非常大鱼
|
无色光芒
职务:普通成员
等级:3
金币:1.0
发贴:1071
|
#132004/11/5 11:30:56
怎么提示 end if这行出错
|
蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
|
#142004/11/5 14:57:42
多练习一些简单的吧,基础方面还没过关,一下子稍复杂的就混了。
非常大鱼
|
无色光芒
职务:普通成员
等级:3
金币:1.0
发贴:1071
|
#152004/11/12 9:17:17
版主教训得极是。我对这个也是刚开始接触。
如果您有时间,不知可不可以给个实例呢?就是把上面的四列表格循环写个具体的页面我看一下。我试了好多次都没成功。
|