社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

我如何计算每个帖子的评论数(MySQL)?

nik • 3 年前 • 1084 次点击  

我这里有两张重要的桌子。其中一个表名为POSTS,包含post和reply(回复与POSTS处理完全相同,但它们在POSTS.reply中有POSTS.id引用的post)。

我的第二个表名为social,包含POST。id作为外键,与视图和喜好+喜欢并查看它的用户一起使用。

我用这个选择来获取我所有的帖子数据,包括标题、内容。。。喜欢、喜欢和观点:

SELECT posts.id, posts.username, posts.time, cat.cat_name, 
posts.title, posts.content, posts.reply,
posts.user_file, posts.audio,
social.views, social.likes
FROM posts
LEFT JOIN user on posts.user_id = user.id 
LEFT JOIN cat ON posts.cat_id = cat.id
LEFT JOIN social ON posts.id = social.post_id
WHERE social.likes IN (SELECT social.likes FROM social 
WHERE social.id IN (SELECT MAX(social.id) 
FROM social GROUP BY post_id))
GROUP BY social.post_id
HAVING posts.reply = 0

我不知道如何让一行包含回复特定帖子的回复数(一行应该包含我在页面上显示的所有数据)。

我不知道如何在一行中包含回复特定帖子的回复数 (1行应包含我在页面上显示的所有数据)。

通常我会收到这样的评论,但我不知道如何合并这些:)

SELECT * FROM posts WHERE posts.reply != 0

结构如下所示:

enter image description here

从我希望收到的查询中:

    "username"  "time"  "cat_name"  "title" "content"   "reply" "user_file" "audio" "views" "likes" "id"    "username"  
   "xxx_user_xxx" "YYYY-MM-DD"  "topic" "Title."    "NSJNASNJSAN?"  "reply: 1/not reply: 0" "/user_uploads/xxx.yyy" "audio or video"    "number of views"   "number oflikes"

现在,我想获得一个额外的回复栏(该栏选择*FROM posts WHERE posts.reply!=0),并获取每个帖子的回复数。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132281
 
1084 次点击  
文章 [ 1 ]  |  最新文章 3 年前
scarlett_r
Reply   •   1 楼
scarlett_r    4 年前

据我所知,你需要每个帖子的回复。 我用post_id、user_id和reply_id创建了一个表,并插入了一些伪值。

create table t1
(id int, user_id int,reply int);
 
 insert into t1 values(100,1,0);
 insert into t1 values(101,2,100);
 insert into t1 values(102,1,100);
 insert into t1 values(103,2,0);
 insert into t1 values(104,3,103);

然后,一个简单的自连接将为您提供对每个帖子的回复,其中包含以下代码。

select a.id,a.user_id,count(b.reply)
from t1 a
left join t1 b
on a.id=b.reply
group by 1,2;