有两个表:
用户表:
用户ID 用户名 发表日志数
1 A 2
2 B 10
文章表:
文章ID 发表者 ……
1 A
2 A
3 A
4 B我想先从文章表里读出每个用户的发表数,然后更新用户表里的“发表日志数”采用SQL语句(过程)来实现,请问有什么思路呢。有人说用游标:从文章表里读出每一条记录,然后更新……以下是类似的ASP代码 SQL="SELECT mem_Name,mem_PostLogs,mem_PostComms FROM blog_Member"
PostNums_MemList.Open SQL,Conn,1,3
SQLQueryNums=SQLQueryNums+1
Do While Not PostNums_MemList.EOF
PostNums_MemList("mem_PostLogs")=Conn.ExeCute("SELECT COUNT(log_ID) FROM blog_Content WHERE log_Author="""&PostNums_MemList("mem_Name")&"""")(0)
SQLQueryNums=SQLQueryNums+1
PostNums_MemList("mem_PostComms")=Conn.ExeCute("SELECT COUNT(comm_ID) FROM blog_Comment WHERE comm_Author="""&PostNums_MemList("mem_Name")&"""")(0)
SQLQueryNums=SQLQueryNums+1
PostNums_MemList.Update
PostNums_MemList.MoveNext
Loop
大家帮忙想想……
用户表:
用户ID 用户名 发表日志数
1 A 2
2 B 10
文章表:
文章ID 发表者 ……
1 A
2 A
3 A
4 B我想先从文章表里读出每个用户的发表数,然后更新用户表里的“发表日志数”采用SQL语句(过程)来实现,请问有什么思路呢。有人说用游标:从文章表里读出每一条记录,然后更新……以下是类似的ASP代码 SQL="SELECT mem_Name,mem_PostLogs,mem_PostComms FROM blog_Member"
PostNums_MemList.Open SQL,Conn,1,3
SQLQueryNums=SQLQueryNums+1
Do While Not PostNums_MemList.EOF
PostNums_MemList("mem_PostLogs")=Conn.ExeCute("SELECT COUNT(log_ID) FROM blog_Content WHERE log_Author="""&PostNums_MemList("mem_Name")&"""")(0)
SQLQueryNums=SQLQueryNums+1
PostNums_MemList("mem_PostComms")=Conn.ExeCute("SELECT COUNT(comm_ID) FROM blog_Comment WHERE comm_Author="""&PostNums_MemList("mem_Name")&"""")(0)
SQLQueryNums=SQLQueryNums+1
PostNums_MemList.Update
PostNums_MemList.MoveNext
Loop
大家帮忙想想……
解决方案 »
- 如何生成如201008100001的单据编号
- 求一个asp.net上传文件的服务器端的方法,其中上传文件的请求是cs程序发送过来的,并不是网页的
- 各位大侠,请给我一段可用JavaScript(内容内详)
- 有关用户提交的内容
- 高人请进 Cache 的使用问题
- ______请教,如何让freetextbox中的图片水平居中?谢谢
- C#在代码下怎么设置提示?
- 如果将一个纯文本页面的内容显示3秒钟以后自动重定向到另外一个网页??
- entity framework 迁移出错
- 晕,今天打开某个网页怎么都是"超时时间已到"
- 向各位大侠求教web页中显示access的ole字段问题 急!急!急
- 请问一下 div的定位问题 谢谢
from 文章表
group by 发表者
from 文章表
group by 发表者
用表变量或者临时表都可以
declare @temp table(name varchar(50),count int);
insert into @temp select name,count(ID) from tableB group by name;
得到临时表里面有文章数
下面可以用游标来更新TableA的内容
declare @count int
declare @name varchar(50)
declare cursor_a cursor
for select name, count from @temp
open cursor_a
fech next from cursor_a into @name,@count
while @@FETCH_STATUS=0
begin
update TableA set count = @count where name=@name
fech next from cursor_a into @name,@count
end
close cursor_a
deallocate cursor_a
users表有字段 id int identity, username varcahr(10), articleCount int
articles表有字段 id int identity, username varcahr(10)那么可以这样处理:
declare @userName varchar(10), @articleCount intDECLARE user_Cursor CURSOR FOR
SELECT a.username, a.articleCount FROM (select username, count(id) as articleCount from articles group by username) a
OPEN user_CursorFETCH NEXT FROM user_Cursor INTo @username, @articleCount
WHILE @@FETCH_STATUS = 0
BEGIN
if exists(select 1 from users where username=@username)
begin
update users set articleCount=@articleCount where username=@username
end
else
begin
insert into users(username, articleCount ) values(@username, @articleCount)
end FETCH NEXT FROM user_Cursor INTo @username, @articleCount
ENDCLOSE user_Cursor
DEALLOCATE user_Cursorselect * from users
update blog_Member set mem_PostLogs=(select count(log_ID) from blog_Content where
log_Author=blog_Member.mem_Name)update blog_Member set mem_PostComms=(select count(comm_ID) from blog_Comment where comm_Author=blog_Member.mem_Name)效果不错 ,呵呵