SQL创建表,表之间的id相互连接



我在一个数据库中有两个表,我想以一种特定的方式组合。

表格如下:

table: watchhistory
customerid |  titleid  | rating |    date
------------+-----------+--------+------------
1488844    | tt0389605 | 3      | 2005-09-06
1181550    | tt0389605 | 3      | 2004-02-01
1227322    | tt0389605 | 4      | 2004-02-06
786312     | tt0389605 | 3      | 2004-11-16
525356     | tt0389605 | 2      | 2004-07-11
1009622    | tt0389605 | 1      | 2005-01-19
table: media
mediaid  | directorid |     title      |        genre         | runtime | releasedate
-----------+------------+----------------+----------------------+---------+-------------
tt0090557 | nm0851724  | Round Midnight | [Drama, Music]       | 133     | 1986
tt0312296 | nm0146385  | 1 Giant Leap   | [Documentary, Music] | 155     | 2002
tt0078721 | nm0001175  | 10             | [Comedy, Romance]    | 122     | 1979
tt2170245 | nm3593080  | 10             | [Thriller]           | 76      | 2012
tt5282238 | nm6207118  | 10             | [Thriller]           | 90      | 2015
tt0312297 | nm0302572  | 10 Attitudes   | [Comedy, Drama]      | 87      | 2001

我想创建一个包含以下列的表:

title (from media) | Views#

我创建了这个查询来获取top 10 titleid,即watchhistory中出现在watchhistory中次数最多的前10个标题:

SELECT titleid, count(*) as Views FROM watchhistory GROUP BY titleid ORDER BY Views DESC limit 10;
titleid   | views
------------+-------
tt7631348  |  1307
tt14627576 |  1065
tt8372506  |  1063
tt5793632  |  1056
tt1403008  |  1053
tt7825602  |  1051
tt6840954  |  1046
tt12780424 |  1042
tt7266106  |  1036
tt6539274  |  1035

我们的目标是用标题(来自媒体)替换这个标题列(来自watchhistory)。我尝试在手表历史之间使用连接。标题和媒体。Mediaid没有运气

我需要什么SQL查询来获得这个所需的表?

提前感谢。

您需要将INNER JOIN添加到mediaid上的媒体表:

SELECT m.title, count(wh.*) as Views 
FROM watchhistory wh
INNER JOIN media m on m.mediaid = wh.titleid 
GROUP BY m.mediaid 
ORDER BY Views DESC LIMIT 10;

要查看select和join正在做什么,您可以简化它:

SELECT m.*, wh.* 
FROM watchhistory wh
INNER JOIN media m on m.mediaid = wh.titleid

结果将是一个将两个表合并在mediaid/titleid上的join 'table'。

相关内容

  • 没有找到相关文章

最新更新