mysql - 连接多个sql表以查找共同值

标签 mysql sql join

我有两个 sql 表,我正在尝试将它们连接在一起。我正在尝试将我的第一个表“video”中的 userid 和“review”表中的 posts_by 连接起来,以便输出列出一个用户对,他们总是为彼此提供“5” “星”栏

我正在使用这个语句,但它没有产生任何结果。 表中只有两个用户符合要求:Jstark@gmail.com 和 cmanley@gmail.com

查询:

SELECT U1.userid, U2.userid
FROM video U1, video U2
WHERE U1.userid < U2.userid   
            (SELECT COUNT(*)         
            FROM video
            WHERE userid = U1.userid) = 
             (SELECT COUNT(J.star) FROM video J, review R
             WHERE  J.userid = U1.userid AND  J.star = R.star AND R.posted_by = U2.userid AND R.star = "5") 
                            review
            (SELECT COUNT(*)         
            FROM video
            WHERE userid = U2.userid) = 
             (SELECT COUNT(J1.star
             FROM video J1, review R1
             WHERE  J1.userid = U2.userid AND  J1.star = R1.star AND R1.posted_by = U1.userid AND R1.star = "5");

视频:

+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+
| video_url                                   | video_name                     | video_description                      | video_subject                            | video_city    | video_tags | star | date       | userid            | reviewed_by       |
+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+
| https://www.youtube.com/watch?v=xGa9AbKO-4s | Nice video of Detroit          | Watch as someone shows you Detroit     | Downtown Detroit                         | Detroit       | lake       | 5    | 2019-11-29 | atticus@yahoo.com | Michael@aol.com   |
+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+
| https://youtu.be/5KE7ppUIPhQ                | Sacaomento Forest              | A nice forest in Sacromento            | Forest in Sacramento                     | Sacramento    | lake       | 3    | 2019-11-30 | Don@yahoo.com     | NULL              |
+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+
| https://youtu.be/5KE7ppUIPhQ1               | Sacromento Forest              | A nice forest in Sacromento            | Forest in Sacromento                     | Sacromento    | lake       | 5    | 2019-12-01 | Don@yahoo.com     |                   |
+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+
| https://youtu.be/BnbE6QzKY-I                | Great video of downtown Dallas | See a tour of downtown Dallas          | Downtown Dallas                          | Dallas        | lake       | 0    | 2019-12-01 | john@gmail.com    | NULL              |
+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+
| https://youtu.be/HGvwO8qq8FI                | Tour of Cape Cod               | See a tour of Cape Code                | View of Cape Code                        | Cape Code     | lake       | 5    | 2019-12-02 | Michael@aol.com   | atticus@yahoo.com |
+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+
| https://youtu.be/HiZXABMNCUY                | Tour of Manhattan              | See Manhattan on the big screen        | Downtown New york                        | Manhattan     | lake       | 2    | 2019-11-27 | Don@yahoo.com     | NULL              |
+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+
| https://youtu.be/ORoyGEgvfXY                | Nice video of Orlando          | See the appeals of Orlando             | Downtown Orlando                         | Orlando       | lake       | 4    | 2019-11-28 | Hhinata@yahoo.com | NULL              |
+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+
| https://youtu.be/pKwuW06NvXM                | Scenic Downtown Cincinatti     | Take the backroutes through Cincinatti | Take the backroutes through Cincinatties | Cincinatti    | lake       | 3    | 2019-11-26 | Jstark@yahoo.com  | NULL              |
+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+
| https://youtu.be/QSwvg9Rv2EI                | Tour of Chicago                | Let us bring Chicago to you            | Downtown Chicago                         | Chicago       | lake       | 2    | 2019-11-25 | john@gmail.com    | NULL              |
+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+
| https://youtu.be/qY02yEvqFio                | Downtown Detroit               | Tour of Downtown Detroit               | Downtown Detroit                         | Detroit       | lake       | 5    | 2019-11-27 | Megan@yahoo.com   | NULL              |
+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+
| https://youtu.be/_QH_tdYR3iI                | Great video of Lake Erie       | See the great lakes up close           | Michigan great lakes                     | Traverse City | lake       | 0    | 2019-11-27 | cmanley@yahoo.com | NULL              |
+---------------------------------------------+--------------------------------+----------------------------------------+------------------------------------------+---------------+------------+------+------------+-------------------+-------------------+

评论:

+--------------------------------+--------------------------+-------------+-------------------+
| video_name                     | review_comments          | review_star | posted_by         |
+--------------------------------+--------------------------+-------------+-------------------+
| Nice video of Detroit          | cool dude                | 2           | john@gmail.com    |
+--------------------------------+--------------------------+-------------+-------------------+
| Tour of Chicago                | cool video               | 5           | Jstark@gmail.com  |
+--------------------------------+--------------------------+-------------+-------------------+
| Tour of Cape Code              | could have been better   | 3           | Megan@yahoo.com   |
+--------------------------------+--------------------------+-------------+-------------------+
| Great video of downtown Dallas | good video               | 5           | Don@gmail.com     |
+--------------------------------+--------------------------+-------------+-------------------+
| Great video of downtown Dallas | great video              | 0           | Don@gmail.com     |
+--------------------------------+--------------------------+-------------+-------------------+
| Nice video of Detroit          | great video!             | 2           | don@yahoo.com     |
+--------------------------------+--------------------------+-------------+-------------------+
| Great video of Lake Erie       | i really didnt like this | 0           | cmanley@gmail.com |
+--------------------------------+--------------------------+-------------+-------------------+
| Great video of downtown Dallas | it was terrible          | 0           | Don@gmail.com     |
+--------------------------------+--------------------------+-------------+-------------------+
| Great video of downtown Dallas | Nice van                 | 4           | Hhinata@yahoo.com |
+--------------------------------+--------------------------+-------------+-------------------+
| Nice video of Detroit          | nice video               | 5           | test@yahoo.com    |
+--------------------------------+--------------------------+-------------+-------------------+
| Sacramento Forest              | okay video               | 3           | atticus@yahoo.com |
+--------------------------------+--------------------------+-------------+-------------------+
| Scenic Downtown Cincinatti     | terrible video           | 0           | Michael@aol.com   |
+--------------------------------+--------------------------+-------------+-------------------+
| Nice video of Orlando          | wonderful video          | 5           | Hhinata@yahoo.com |
+--------------------------------+--------------------------+-------------+-------------------+

最佳答案

为了解决这个问题,我将从一些基本查询开始,并努力找到所提出的答案。

首先通过联接整理视频和评论

SELECT v.video_name, AVG(review_star)
FROM video v
JOIN review r
  USING (video_name)
GROUP BY v.video_name

然后我们可以查看评论者的平均星级评分:

SELECT r.posted_by, AVG(review_star)
FROM review r
GROUP BY r.posted_by

更进一步,按海报/评论对进行分组:

SELECT v.userid, r.posted_by, AVG(review_star)
FROM video v
JOIN review r
  USING (video_name)
GROUP BY v.userid, r.posted_by

HAVING 允许对此进行后置过滤器。所有 5 星级评分的平均值为 5。

SELECT v.userid, r.posted_by, AVG(review_star) as avg
FROM video v
JOIN review r
  USING (video_name)
GROUP BY v.userid, r.posted_by
HAVING avg = 5

关于mysql - 连接多个sql表以查找共同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59185901/

相关文章:

mysql 以一对多、多对一关系连接并且没有冗余数据

php - AJAX - 如何在选择时显示不同的列

mysql - MySQL JOIN 的评估顺序是什么?

php - 加入查询在 Codeigniter 中不起作用

每个子句上带有参数的并集的 SQL View

sql - 同表结构不同名称不同用途-SQL

mysql - 我怎样才能让我的代码与3个sql表一起工作?

php - Mysql 子查询连接表

mysql - MySQL + 子串怎么做? + 替换?

mysql - 将带有 InnoDB 和 MyISAM 表的 MyISAM 数据库迁移到新服务器