资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
BBS数据库设计阶段41.上机目标:利用子查询语句,完成论坛的年度评估。最后综合T-SQL应用,实现论坛的发贴、回贴及删贴。 使用子查询IN/EXISTS实现论坛的年度评选 T-SQL语句的综合应用实现论坛的发贴、回贴和删贴2训练技能点 会使用子查询IN/EXISTS T-SQL语句的综合应用3上机步骤:(1)使用T-SQL语句实现论坛年度评估: 论坛人气评估:论坛总点击率1000,为“人气熊旺旺”;否则就为“一般般” 年度品牌版块:主贴量最多的版块。 年度倒胃版块:主贴量最少的版块。 年度回贴人气最旺奖:回贴的点击率排名前2名 。 年度业绩最差版主:版块点击率低于500或主贴量等于0 。品牌版块年度倒胃版块年度回贴人气最旺会员年度业绩最差版主参考代码:USE bbsDBGOSET NOCOUNT ONprint -各位大虾注意了,本论坛即将发布年度无记名评奖1000,人气较旺IF (SELECT SUM(SclickCount) FROM bbsSection)1000 print 论坛人气年度评估:熊旺旺,大家辛苦了!ELSE print 论坛人气年度评估:一般般,大家加油啊!-评选品牌版块和倒胃版块:根据主帖数量评估print 年度品牌版块:SELECT 版块名称=Sname,主帖数量=StopicCount,简介=Sprofile FROM bbsSection WHERE StopicCount=(SELECT MAX(StopicCount) FROM bbsSection)print 年度倒胃版块:SELECT 版块名称=Sname,主帖数量=StopicCount,简介=Sprofile FROM bbsSection WHERE StopicCount=(SELECT MIN(StopicCount) FROM bbsSection)-评选回贴人气最旺的前两名作者print 年度回贴人气最IN的前两名获奖作者:SELECT 大名=Uname,星级=Uclass FROM bbsUsers WHERE UID IN (SELECT TOP 2 TuID FROM bbsTopic ORDER BY TclickCount DESC)-评选最差版主:如果存在发帖量为的板块,列出对应的版块和版主信息IF EXISTS (SELECT * FROM bbsSection WHERE StopicCount=0 OR SclickCount=500) BEGIN print 请下列版块的斑竹加加油哦! SELECT 版块名称=Sname,主帖数量=StopicCount,点击率=SclickCount FROM bbsSection WHERE StopicCount=0 OR SclickCount=500 ENDGO(2)假定心酸果冻在“.NET技术”版块发主贴。怯怯的问:“什么是.NET啊?”贴的内容为“我靠!微软的.NET广告超过半个北京城啊。”要求使用T-SQL实现以下业务规则。 用户发主贴后,需要更新相应版块(.NET技术版块)的主贴数,主贴数+1 用户发主贴后,酌情加分:如果主贴是新题(别人没提及过),加100分,否则加50分 用户积分添加后,更新用户的相应等级 在论坛上发布用户(心酸果冻)的新贴 所有用户的等级重新排名 心酸果冻的新贴心酸果冻发贴后新的等级排名提示1:提示2:单击菜单“工具”/”选项”命令,选择查询结果,将显示结果的默认方式选择为“以网格显示结果”,执行 后的输出结果如上图所示。参考代码:/*-发主贴:心酸果冻在.Net技术版块发贴:怯怯的问:什么是.Net啊?微软的.Net广告超过半个北京城啊。-*/DECLARE userID varchar(10),sID INT -定义变量存放用户编号和版块编号SELECT userID=UID FROM bbsUsers WHERE Uname=心酸果冻 -获取心酸果冻的用户编号SELECT sID=SID FROM bbsSection WHERE Sname LIKE %.Net技术% -获取.Net版块的编号-插入主贴表INSERT INTO bbsTopic (TsID,TuID,Tface,Ttopic,Tcontents)VALUES(sID,userID,3,什么是.Net啊?,微软的.Net广告超过半个北京城啊。)-更新版块表:.Net技术版块主贴数+1UPDATE bbsSection SET StopicCount=StopicCount+1 WHERE SID=sID-更新用户的积分:如果是新主题,则积分增加,否则增加IF NOT EXISTS (SELECT * FROM bbsTopic WHERE Ttopic LIKE 什么是.Net啊? AND TuIDuserID) UPDATE bbsUsers SET Upoint=Upoint+100 WHERE UID=userIDELSE UPDATE bbsUsers SET Upoint=Upoint+50 WHERE UID=userID-更新用户的积分后,更新相应的级别UPDATE bbsUsers SET UCASE WHEN Upoint 500 THEN 1 WHEN Upoint BETWEEN 500 AND 1000 THEN 2 WHEN Upoint BETWEEN 1001 AND 2000 THEN 3 WHEN Upoint BETWEEN 2001 AND 4000 THEN 4 WHEN Upoint BETWEEN 4001 AND 5000 THEN 5 ELSE 6 END WHERE UID=userID-对外公告心酸果冻的发贴SELECT 发贴作者=心酸果冻,发贴时间=convert(varchar(10),Ttime,111), 主题=Ttopic,内容=Tcontents FROM bbsTopic WHERE TID=IDENTITY-显示目前的最新排名SELECT 昵称=Uname,星级=CASE WHEN U0 THEN WHEN U1 THEN WHEN U2 THEN WHEN U3 THEN WHEN U4 THEN WHEN U5 THEN ELSE END ,积分=Upoint FROM bbsUsersGO(3)假定可卡因回复主贴:“什么是.NET啊?”,笑呵呵的回复道:“.NET是微软力推的企业级信息网络共享平台。”要求使用T-SQL实现以下业务规则。 用户回贴后,需要更新对应主贴的信息:回复数量+ 1,点击率+1。 用户回贴后,还需要更新对应版块的点击率,点击率+1。 用户回贴后,酌情加分:如果是该贴的第一回贴人(即第一个回贴的),加100分;否则加50分。 用户积分添加后,更新用户的相应等级(等级规则参考阶段3)。 在论坛上发布主贴和跟贴。 论坛用户星级重新排名。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号