关于oracle三表联查的问题
有三个表第一个user_name(用户表)第二个user_zt(主题表)第三个user_ht(回帖吧)请问如何查询出“僵尸”用户:即没发帖也没回复过的用户如:作者发帖数量...
有三个表第一个 user_name(用户表)第二个user_zt(主题表)第三个user_ht(回帖吧)请问如何查询出“僵尸”用户:即没发帖也没回复过的用户如:作者 发帖数量 回复数量---------------------------------------------------------------孙权 0 0... ...第2:查询当前热门帖子,既当前帖子回复数量大于0的显示发帖人,标题,回帖数量如:作者 帖子 回复数量-----------------------------------------------------------孔明 草船借箭 3... ...
展开
1个回答
展开全部
这是两个问题吧。
第一个按照你的理解就是userid没有出现在user_zt(主题表)第三个user_ht(回帖吧)中就可以认为是“僵尸”用户。
那么有几种写法,个人认为最简单的就是(在发帖中没有这个人,回帖中也没有这个人就可以了,当然其他写法也可以,比如联合查询后不等于等等。)
select username ,0,0 from user_name where user_name.userid not in (select userid from user_zt ) and user_name.userid not in (select userid from user_ht )
当前回帖数量大于0的发帖人,也就是说发帖后有回帖就算,不知道要不要找个人最热帖,也就是说,假设一个人有多个主题,那么是要把所有的主题都显示出来,还是只显示最热的。我就按照你的基本要求写一个都显示的
select user_name.username,user_zt.title,a.回帖数量 from (select ztid,count(1) 回帖数量 from user_ht group by ztid) a, user_zt,user_name where a.ztid=user_zt.id and user_name.userid=user_zt.userid
第一个按照你的理解就是userid没有出现在user_zt(主题表)第三个user_ht(回帖吧)中就可以认为是“僵尸”用户。
那么有几种写法,个人认为最简单的就是(在发帖中没有这个人,回帖中也没有这个人就可以了,当然其他写法也可以,比如联合查询后不等于等等。)
select username ,0,0 from user_name where user_name.userid not in (select userid from user_zt ) and user_name.userid not in (select userid from user_ht )
当前回帖数量大于0的发帖人,也就是说发帖后有回帖就算,不知道要不要找个人最热帖,也就是说,假设一个人有多个主题,那么是要把所有的主题都显示出来,还是只显示最热的。我就按照你的基本要求写一个都显示的
select user_name.username,user_zt.title,a.回帖数量 from (select ztid,count(1) 回帖数量 from user_ht group by ztid) a, user_zt,user_name where a.ztid=user_zt.id and user_name.userid=user_zt.userid
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询