【发布时间】:2017-05-18 22:20:32
【问题描述】:
我想了解 Web 开发,所以我创建了一个网站,用户可以在其中对电影进行投票,但在查询我需要的内容时遇到了问题。我的表格如下:
--rtable--
+-----------+------------+------------+
| movieid | rating | userid |
+-----------+------------+------------+
| 1 | 9 | 27 |
| 2 | 8 | 27 |
| 1 | 10 | 31 |
| 1 | 7 | 42 |
| 2 | 8 | 31 |
+-----------+------------+------------+
--mtable--
+-----------+------------+------------+------------+
| movieid | moviename | movielink | director |
+-----------+------------+------------+------------+
| 1 | Foo | foo.com | bob |
| 2 | Bar | bar.com | steve |
+-----------+------------+------------+------------+
我想查询电影名称、电影链接、avg(rating) 和用户评分(如果存在),按 avg(rating) 降序
--desiredtable (if userid == 42)--
+-----------+------------+------------+------------+
| moviename | movielink | avgrating | yourrating |
+-----------+------------+------------+------------+
| Foo | foo.com | 8.66 | 7 |
| Bar | bar.com | 8 | NULL |
+-----------+------------+------------+------------+
我已经设法让电影名称 + 电影链接 + avgrating 与 OUTER LEFT JOIN 一起工作,但我对如何添加您的评级感到头疼。我尝试在 OUTER JOIN 上加倍并使用子查询,但似乎无法正常工作。
这就是我目前所拥有的效果
SELECT mtable.moviename, mtable.movielink, ROUND(AVG(rtable.rating), 2) AS avgrating,
FROM mtable LEFT OUTER JOIN rtable ON rtable.movieid = mtable.movieid GROUP BY mtable.charid ORDER BY AVG(rtable.rating) DESC
【问题讨论】: