有3张表 a ,b ,c
a表是用户表。 有 name (姓名)
int(积分默认为一百)两列。
b表是提出问题表。 有 id(问题id)
name(用户姓名)
question(问题名称)
int(提问给的分数)
isok(是否解决 '0' 代表解决中,‘1' 代表已解决)
c表是回答问题表。 有 id(回答id)
questionid(问题id)
answer(回答内容)
name(用户姓名)
现在我需要根据用户名来取出
1.总分: 2.回答得分: 3.悬赏付出: 4.处罚: 5. 回答总数: 6.回答被采纳: 7.回答被采纳率: 8.提问总数: 9.已解决的问题数: 10.解决中的问题数:
用一条存储过程来写出.
如何做到。
现在还有个问题,有个处罚.我在那个表中加处罚列合适.
非常感谢!
a表是用户表。 有 name (姓名)
int(积分默认为一百)两列。
b表是提出问题表。 有 id(问题id)
name(用户姓名)
question(问题名称)
int(提问给的分数)
isok(是否解决 '0' 代表解决中,‘1' 代表已解决)
c表是回答问题表。 有 id(回答id)
questionid(问题id)
answer(回答内容)
name(用户姓名)
现在我需要根据用户名来取出
1.总分: 2.回答得分: 3.悬赏付出: 4.处罚: 5. 回答总数: 6.回答被采纳: 7.回答被采纳率: 8.提问总数: 9.已解决的问题数: 10.解决中的问题数:
用一条存储过程来写出.
如何做到。
现在还有个问题,有个处罚.我在那个表中加处罚列合适.
非常感谢!
create table #Users
(
name varchar(10),
jf int not null default 100
)
go
create table #Questions
(
q_id int,
name varchar(10),
question varchar(100),
score int,
isok bit not null default 0
)
go
create table #Answers
(
s_id int,
q_id int,
answer varchar(100),
name varchar(10)
)
go
select u.name,--姓名
(u.jf+2*a.a_count-q.score) jf, --总分
(2*a.a_count) a_score, --回答得分
a.a_count, --回答总数
q.q_count, --提问总数
q.solved_count, --已解决问题数
(q.q_count-q.solved_count) ongoing_count, --解决中的问题数
from #Users u join(select name,count(*) a_count
from #Answers
group by name) a on u.name=a.name
join(select name,
sum(score) score,
sum(cast(isok as int)) solved_count,
count(*) q_count
from #Questions
group by name)q on u.name=q.name
go
drop table #Users,#Questions,#Answers至于“3.悬赏付出: 4.处罚: 6.回答被采纳: 7.回答被采纳率:”不能做出来。
因为:
1、没有关于“悬赏、处罚”的信息
2、没有“是否被采纳”的信息
现在在 用户表中加力一个处罚列!
在回答表中有一列isover (0代表没有被采纳,1代表被采纳)
浑身冒汗!!!!
有3张表 a ,b ,c
a表是用户表。 有 name (姓名)
int(积分默认为一百)。
chufa(被处罚的分数)
b表是提出问题表。 有 id(问题id)
name(用户姓名)
question(问题名称)
int(提问给的分数)
isok(是否解决 '0' 代表解决中,‘1' 代表已解决)
c表是回答问题表。 有 id(回答id)
questionid(问题id)
answer(回答内容)
name(用户姓名)
isaccp(是否为采纳答案)
现在需要根据用户名来取出
1.总分: 2.回答得分: 3.悬赏付出: 4.处罚: 5. 回答总数: 6.回答被采纳: 7.回答被采纳率: 8.提问总数: 9.已解决的问题数: 10.解决中的问题数:
用一条存储过程来写出.
=====================================
1.总分 即a.int
2.回答得分 即c表中某个用户的回答总数*2,加上被采纳的回答的奖励分数
3.悬赏付出 即b表中某用户的悬赏总分
4.处罚 即a.chufa
5.回答总数 即c表中某用户的回答总数
6.回答被采纳 即c表中某用户的被采纳回答数
不写了,累
(
name varchar(10),
jf int not null default 100
)
go
create table #Questions
(
q_id int,
name varchar(10),
question varchar(100),
score int,
isok bit not null default 0
)
go
create table #Answers
(
s_id int,
q_id int,
answer varchar(100),
name varchar(10)
)
go
select u.name,--姓名
(u.jf+2*a.a_count-q.score) jf, --总分
(2*a.a_count) a_score, --回答得分
a.a_count, --回答总数 free web hosting
q.q_count, --提问总数
q.solved_count, --已解决问题数
(q.q_count-q.solved_count) ongoing_count, --解决中的问题数
from #Users u join(select name,count(*) a_count
from #Answers
group by name) a on u.name=a.name
join(select name,
sum(score) score,
sum(cast(isok as int)) solved_count,
count(*) q_count
from #Questions
group by name)q on u.name=q.name
go
drop table #Users,#Questions,#Answers
看SQL联机帮助~!