1、BBS 数据库设计阶段 41.上机目标:利用子查询语句,完成论坛的年度评估。最后综合 T-SQL 应用,实现论坛的发贴、回贴及删贴。使用子查询 IN/EXISTS 实现论坛的年度评选T-SQL 语句的综合应用实现论坛的发贴、回贴和删贴2训练技能点会使用子查询 IN/EXISTST-SQL 语句的综合应用3上机步骤:(1)使用 T-SQL 语句实现论坛年度评估:论坛人气评估:论坛总点击率1000,为“人气熊旺旺”;否则就为“一般般” 年度品牌版块:主贴量最多的版块。年度倒胃版块:主贴量最少的版块。年度回贴人气最旺奖:回贴的点击率排名前 2 名 。年度业绩最差版主:版块点击率低于 500 或主贴量
2、等于 0 。参考代码:USE bbsDBGOSET NOCOUNT ONprint -各位大虾注意了, 本论坛即将发布年度无记名评奖1000,人气较旺IF (SELECT SUM(SclickCount) FROM bbsSection)1000 print 论坛人气年度评估:熊旺旺, 大家辛苦了!品牌版块年度倒胃版块年度回贴人气最旺会员年度业绩最差版主ELSEprint 论坛人气年度评估:一般般, 大家加油啊!-评选品牌版块和倒胃版块:根据主帖数量评估print 年度品牌版块:SELECT 版块名称= Sname,主帖数量=StopicCount ,简介=Sprofile FROM bbsS
3、ectionWHERE StopicCount=(SELECT MAX(StopicCount) FROM bbsSection)print 年度倒胃版块:SELECT 版块名称= Sname,主帖数量=StopicCount ,简介=Sprofile FROM bbsSectionWHERE StopicCount=(SELECT MIN(StopicCount) FROM bbsSection)-评选回贴人气最旺的前两名作者print 年度回贴人气最IN的前两名获奖作者:SELECT 大名=Uname,星级=Uclass FROM bbsUsers WHERE UID IN (SELECT
4、 TOP 2 TuID FROM bbsTopic ORDER BY TclickCount DESC)-评选最差版主:如果存在发帖量为的板块,列出对应的版块和版主信息IF EXISTS (SELECT * FROM bbsSection WHERE StopicCount=0 OR SclickCountuserID)UPDATE bbsUsers SET Upoint=Upoint+100 WHERE UID=userIDELSEUPDATE bbsUsers SET Upoint=Upoint+50 WHERE UID=userID-更新用户的积分后,更新相应的级别UPDATE bbsU
5、sers SET Uclass=CASEWHEN Upoint 500 THEN 1WHEN Upoint BETWEEN 500 AND 1000 THEN 2WHEN Upoint BETWEEN 1001 AND 2000 THEN 3WHEN Upoint BETWEEN 2001 AND 4000 THEN 4WHEN Upoint BETWEEN 4001 AND 5000 THEN 5ELSE 6ENDWHERE UID=userID-对外公告心酸果冻的发贴SELECT 发贴作者= 心酸果冻, 发贴时间=convert( varchar(10),Ttime,111), 主题=Tt
6、opic,内容=Tcontents FROM bbsTopic WHERE TID=IDENTITY-显示目前的最新排名SELECT 昵称=Uname,星级=CASEWHEN Uclass=0 THEN WHEN Uclass=1 THEN WHEN Uclass=2 THEN WHEN Uclass=3 THEN WHEN Uclass=4 THEN WHEN Uclass=5 THEN ELSE END,积分=Upoint FROM bbsUsersGO(3)假定可卡因回复主贴:“什么是.NET 啊?” ,笑呵呵的回复道: “.NET 是微软力推的企业级信息网络共享平台。 ”要求使用 T-SQL 实现以下业务规则。用户回贴后,需要更新对应主贴的信息:回复数量+ 1,点击率+1。用户回贴后,还需要更新对应版块的点击率,点击率+1。用户回贴后,酌情加分:如果是该贴的第一回贴人(即第一个回贴的) ,加 100 分;否则加 50 分。用户积分添加后,更新用户的相应等级(等级规则参考阶段 3) 。在论坛上发布主贴和跟贴。论坛用户星级重新排名。