mysql计算每个用户的点赞次数,推文数量以及关注者和关注者帐户的数量

编程入门 行业动态 更新时间:2024-10-12 10:17:26

mysql计算每个用户的点赞次数,推文<a href=https://www.elefans.com/category/jswz/34/1770431.html style=数量以及关注者和关注者帐户的数量"/>

mysql计算每个用户的点赞次数,推文数量以及关注者和关注者帐户的数量

我正在使用node.js构建一个类似Twitter的应用,很有趣,并且我有多个表:

用户:存储用户的数据。

tweets:存储推文。

喜欢:存储哪些用户喜欢哪些推文。

retweets:存储用户转发了哪些推文。

以下:存储正在跟随其他用户的用户。

CREATE TABLE IF NOT EXISTS `following` (
  `user_id` varchar(50) NOT NULL,
  `followed_id` varchar(50) NOT NULL,
  `date_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`user_id`,`followed_id`)
)

CREATE TABLE IF NOT EXISTS `likes` (
  `user_id` varchar(50) NOT NULL,
  `tweet_id` varchar(50) NOT NULL,
  `date_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`user_id`,`tweet_id`)
)

CREATE TABLE IF NOT EXISTS `retweets` (
  `user_id` varchar(50) NOT NULL,
  `tweet_id` varchar(50) NOT NULL,
  `date_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`user_id`,`tweet_id`)
)

CREATE TABLE IF NOT EXISTS `tweets` (
  `tweet_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `reply_to_tweet_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `reply_to_user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `truncated` tinyint(1) NOT NULL,
  `author` varchar(30) NOT NULL,
  `text` varchar(255) NOT NULL,
  `media` varchar(255) NOT NULL,
  `entities` json NOT NULL,
  PRIMARY KEY (`tweet_id`)
)

CREATE TABLE IF NOT EXISTS `users` (
  `user_id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `email` varchar(30) NOT NULL,
  `username` varchar(30) NOT NULL,
  `password` varchar(255) NOT NULL,
  `handelname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `account_url` varchar(255) NOT NULL,
  `bio` varchar(255) NOT NULL,
  `profile_pic` varchar(255) NOT NULL,
  `cover_pic` varchar(255) NOT NULL,
  `protected` tinyint(1) NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `email` (`email`),
  UNIQUE KEY `username` (`username`)
) 

并且我想为其中包含信息以及多少条推文的用户创建一个新视图他们确实喜欢,关注的用户数量,关注的用户数量以及创建的推文数量。我希望将这些信息放在一个表中,但是我尝试了许多方法,但没有一种对我有效!解决此问题的正确方法是什么?

回答如下:

您可以在下面的查询中尝试-

SELECT `user_id`
      ,LI.LI_CNT no_of_tweets_liked
      ,FL.FL_CNT no_of_followers
      ,FL2.FL2_CNT no_of_followee
      ,RT.RT_CNT no_of_retweets
FROM `users` U
JOIN (SELECT `user_id`, COUNT(`tweet_id`) LI_CNT
      FROM `likes`
      GROUP BY `user_id`) LI ON U.`user_id` = LI.`user_id`
JOIN (SELECT `user_id`, COUNT(`followed_id`) FL_CNT
      FROM `following`
      GROUP BY `user_id`) FL ON U.`user_id` = FL.`user_id`
JOIN (SELECT `followed_id`, COUNT(`followed_id`) FL2_CNT
      FROM `following`
      GROUP BY `followed_id`) FL2 ON U.`user_id` = FL2.`followed_id`
JOIN (SELECT `user_id`, COUNT(`tweet_id`) RT_CNT
      FROM `retweets`
      GROUP BY `user_id`) RT ON U.`user_id` = RT.`user_id`;

更多推荐

mysql计算每个用户的点赞次数,推文数量以及关注者和关注者帐户的数量

本文发布于:2024-05-06 23:41:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753947.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数量   帐户   次数   用户   mysql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!