请教一个查询记录总数问题和一个贴子数据结构问题!

MyRain_2012 2019-10-16 09:59:45
各位大神好,我做了个简易的发贴页面,一共有二个表,第一个是用户信息表,第二个是贴子内容表。

用户表字段:用户ID,用户昵称,用户头像 (昵称和头像是可以自行更改的)
贴子表字段:贴子ID,主题贴ID,发贴者ID,贴子内容 (发贴者ID对应用户ID)

有二个问题希望得到大家的帮助:

一、我想查询某个用户在多少个贴子里进行了回复,同一个贴子多次回复不重复计数,不知道该怎么写,我写的这语句不能正确得到结果。
select count(*) as total from bbslist where 发贴者ID=123456 and 主题贴ID<>0 group by 主题贴ID


二、是不是每一个贴子回复者信息,都要去用户信息表里查询啊,比如一个贴子有十条回复,那么就要去用户信息表里查询十次回复者的昵称和头像信息吗?有没有不这么费事的方法。

感谢各位!



...全文
114 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
stelf 2019-10-16
  • 打赏
  • 举报
回复
用递归来处理层级关系啊
MyRain_2012 2019-10-16
  • 打赏
  • 举报
回复
引用 1 楼 寻觅灯火阑珊处 的回复:
用户回复是对应哪个表的哪个字段?

我是将楼主贴和回复贴放在一个表里面的,回复贴在表里将字段“主题贴ID”设置成所回复贴子的ID的。
遇星 2019-10-16
  • 打赏
  • 举报
回复
用户回复是对应哪个表的哪个字段?
纳尼刘君 2019-10-16
  • 打赏
  • 举报
回复
第一个问题:你写法没问题,只不过出来的结果是不去重的。问题是某个用户回复了多少个帖子,所以结果呈现的应该是 用户 | 回帖个数 的形式,所以应该是以 用户 来分组的,去重的话就用distinct。 select 发帖者ID,COUNT(distinct 主题贴ID) as num from bbslist  where 发贴者ID=123456 and 主题贴ID<>0 group by 发帖者ID 第二个问题:一般这种情况就两种选择:一个是直接使用视图,将用户表和帖子表关联查询就可以了;一个是把用户头像名称存到帖子表里,但如果用户信息修改了,要求信息同步的话,你也要改这个帖子表里用户的信息。所以视情况而定吧

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧