Mysql 连接多个sql表以查找公共值
我有两个sql表要连接在一起。我试图将我的第一个表“video”中的用户ID和表“review”中的posted_by连接起来,这样输出就列出了一个用户对,他们在“star”列中总是给对方“5” 我一直在研究这个声明,但没有任何结果。 表中只有两个用户符合要求:Jstark@gmail.com及cmanley@gmail.com 查询:Mysql 连接多个sql表以查找公共值,mysql,sql,join,Mysql,Sql,Join,我有两个sql表要连接在一起。我试图将我的第一个表“video”中的用户ID和表“review”中的posted_by连接起来,这样输出就列出了一个用户对,他们在“star”列中总是给对方“5” 我一直在研究这个声明,但没有任何结果。 表中只有两个用户符合要求:Jstark@gmail.com及cmanley@gmail.com 查询: SELECT U1.userid, U2.userid FROM video U1, video U2 WHERE U1.userid < U2.user
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_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
拥有
允许对此进行后期筛选。所有五星评级的平均值为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
请以表格文本(或DDL/DML语句)的形式提供两个表的示例数据,以及您的预期结果。这些微小的图像很难读取,无法轻松转换为可用于测试的内容。请编辑这些表。谢谢
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