怎样记录总数,老板催呢

crystal02074 2006-10-24 09:53:07
假如大家对一事进行评论,我想这样显示:用户名+内容+第()幅,请问这个第()幅怎么实现呢,请大家帮忙啊,现在很急,老板要呢
...全文
474 29 打赏 收藏 举报
写回复
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
snwcwt 2006-10-24
  • 打赏
  • 举报
回复
这个SQL语句代价太大了,最好是直接在ASP页上显示序号
snwcwt 2006-10-24
  • 打赏
  • 举报
回复
如果有个自增的ID号,可以这样写
SELECT *,(SELECT COUNT(*) AS Expr1
FROM mytable AS a
WHERE (ID <= mytable.id)) AS position
FROM mytable

最后查询出来的position就是位置,即使中间有删掉的评论也无所谓,按照1,2,3顺序排下来的
crystal02074 2006-10-24
  • 打赏
  • 举报
回复
对啊,有ID呢,问题解决了,谢谢大家
livode 2006-10-24
  • 打赏
  • 举报
回复
不是有id字段嘛。
<%=rsly("unicknme")%>于<%=rsly("creatdate")%>发表评论:</font><font color="#FFFFFF"><%=rsly("remark")%>第<%=rsly("id")%>幅</font></td>,
copico 2006-10-24
  • 打赏
  • 举报
回复
在查询的时候就可以在后面加个索引

先创建一个临时表带自动索引的,然后把查询的内容添进去,然后再查询临时表
早起晚睡 2006-10-24
  • 打赏
  • 举报
回复
这个是找到最大的20个ID号
crystal02074 2006-10-24
  • 打赏
  • 举报
回复
sql="select top 20 * from nanly where yn=1 order by id desc"
set rsly=conn.execute(sql)
是这样读取的
crystal02074 2006-10-24
  • 打赏
  • 举报
回复
这样真是说不清楚啊,因为我也是在别人的基础上改的,不过谢谢大家了,我自己再想办法吧
livode 2006-10-24
  • 打赏
  • 举报
回复
楼主啊,你怎么访问的数据库呢?还有,数据库的表结构又是什么样的呢?
crystal02074 2006-10-24
  • 打赏
  • 举报
回复
看了这么多,有点收获,但我还是不太会,请大家帮我看下这个 <td align="left"><font color="#FFFFFF">网友<%=rsly("unicknme")%>于<%=rsly("creatdate")%>发表评论:</font><font color="#FFFFFF"><%=rsly("remark")%>第<%%>幅</font></td>,其中unicknme,creatdate都是数据库的字段,那第<%%>幅中的<%%>中应怎样去做
int64 2006-10-24
  • 打赏
  • 举报
回复
PLID(评论的id)或许叫PLIndex更合适些,是评论的位置,在某条新闻中的位置
int64 2006-10-24
  • 打赏
  • 举报
回复
ID(自增),NewID(新闻ID),PLID(评论的id)。。。。。


NewID(新闻ID):评论的唯一性

NewID(新闻ID):对应的新闻ID
PLID(评论的id):这个评论在这个新闻中的位置


max当然是对PLID的。
int64 2006-10-24
  • 打赏
  • 举报
回复
评论表起码应该有这几个字段
ID(自增),NewID(新闻ID),PLID(评论的id)
当你添加一个评论的时候,先select max(PLID) from...where NewID=当前新闻的ID,把max(PLID)+1作为当前增加的评论的PLID,这样就能符合楼主的要求了。当前这个sql是在存储过程中完成的
livode 2006-10-24
  • 打赏
  • 举报
回复
假设当前评论数为5条,max=5,count=5,现在删除1条,那么,max=5,count=4,现在又增加了一条,则max=6,count=5,那么这个count不就重复了吗?!
===============================================================
请问,如果没有自增,或者递增的数据序列,请问,你对那列进行max操作。
int64 2006-10-24
  • 打赏
  • 举报
回复
+1列,就是你的库表中增加一个字段,选中自动增长属性。采用此法,需要修改之前你所有对此表的select * 操作。
在不存在自增字段或者一个递增字段的时候,不能用max()+1;只能用count(*)来获取记录总数。
格式:select ....,count(*)[as 别名] from ......
ps:[]中的为可有可无的
然后在页面里处理即可。
--------------------------
假设当前评论数为5条,max=5,count=5,现在删除1条,那么,max=5,count=4,现在又增加了一条,则max=6,count=5,那么这个count不就重复了吗?!
livode 2006-10-24
  • 打赏
  • 举报
回复
+1列,就是你的库表中增加一个字段,选中自动增长属性。采用此法,需要修改之前你所有对此表的select * 操作。
在不存在自增字段或者一个递增字段的时候,不能用max()+1;只能用count(*)来获取记录总数。
格式:select ....,count(*)[as 别名] from ......
ps:[]中的为可有可无的
然后在页面里处理即可。
int64 2006-10-24
  • 打赏
  • 举报
回复
评论肯定是对某一个新闻,或者什么进行的,每个新闻的评论都有第一,第二

所以你在增加一个评论的时候,先读取这个新闻评论的max(位置),进行+1作为当前加入评论的位置。
crystal02074 2006-10-24
  • 打赏
  • 举报
回复
因为这个页面是刚做的,库也是刚建的,我觉得修改起来也不麻烦,可以告诉我方法吗?老板老是催我要,我现在没有办法,要是用max()+1的话又该怎么实现呢,不好意思,我真的很菜
livode 2006-10-24
  • 打赏
  • 举报
回复
to:int64
在数据库里面做,Max()+1,不能用count()+1,因为可能有的评论会被删除
-------------------------------------------------------------------------
即使删除了评论也没有影响,因为,不存在自增1列。

to lz:
自增列是在设计库的时候就应该有的,作为该表的主键。既然没有此列,就不要考虑改数据库表结构的方法了。用max()+1,或者count()+1来代替吧。
int64 2006-10-24
  • 打赏
  • 举报
回复
在数据库里面做,Max()+1,不能用count()+1,因为可能有的评论会被删除
加载更多回复(9)
相关推荐
发帖
C#

10.9w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-10-24 09:53
社区公告

让您成为最强悍的C#开发者