Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:为IMDb个人项目将单个评级表压缩为一个_Sql_Ms Access_Imdb - Fatal编程技术网

SQL:为IMDb个人项目将单个评级表压缩为一个

SQL:为IMDb个人项目将单个评级表压缩为一个,sql,ms-access,imdb,Sql,Ms Access,Imdb,我目前正在做一个个人项目,我需要一些帮助 情景: 我正在为我自己和一些朋友看过的所有电影创建一个数据库(MS Access)。我们在IMDb上对所有电影进行评级,并使用导出功能获取所有电影数据和电影评级。我计划在Excel上做一些总结分析。我在SQL和关系数据库方面的经验不多,但我真的很喜欢它,这个项目帮助我更好地理解它 问题: 下面是存储所有电影信息的“我的表”的外观(const用作主键): 然后,对于每个单独的评分员,我有一个单独的表,其中const,和[您的评分]作为列,如詹姆斯的评分所

我目前正在做一个个人项目,我需要一些帮助

情景: 我正在为我自己和一些朋友看过的所有电影创建一个数据库(MS Access)。我们在IMDb上对所有电影进行评级,并使用导出功能获取所有电影数据和电影评级。我计划在Excel上做一些总结分析。我在SQL和关系数据库方面的经验不多,但我真的很喜欢它,这个项目帮助我更好地理解它

问题:

下面是存储所有电影信息的“我的表”的外观(
const
用作主键):

然后,对于每个单独的评分员,我有一个单独的表,其中
const
,和
[您的评分]
作为列,如詹姆斯的评分所示:


我想将所有单独的评分表压缩成一个表,列为:
rater
(即James、Alex、Doug)、
const
yourRate
。我该怎么做呢?

如果以一致的方式命名包含评级的各个表,最简单的方法是使用vba函数从不同的表中提取数据并将其插入新表中

例如,如果您有一个新的表
ratings(rater,const,yourrating)
并希望从名为
R\u JAMES
的表中插入评级,则此代码将执行以下操作:

Function InsertRatings()

    Dim rs As New ADODB.Recordset
    Dim strSql As String

    strSql = "SELECT name FROM MSysObjects WHERE Type=1 AND Flags=0 AND Name like 'R[_]J%';"
    rs.Open strSql, CurrentProject.Connection

    DoCmd.SetWarnings False

    Do While Not rs.EOF

        strSql = "INSERT INTO ratings SELECT '" + rs!Name + "' AS Rater, const, [you rated] as yourrate from " + rs!Name + ";"

        DoCmd.RunSQL strSql
        rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing

    DoCmd.SetWarnings True

End Function

将其添加为visual basic模块,并在需要时调整列名后运行它。

您可以使用类似的联合查询

select "rater 1" as rater, const, [you rated] from [rater 1]
union select "rater 2", const, [you rated] from [rater 2]
...
union select "rater n", const, [you rated] from [rater n]
这不会生成一个新表,但在大多数情况下,可以将查询当作一个表来使用


要进行联合查询,请在“设计”视图中打开一个新查询,不要选择任何要放入其中的表,然后在SQL视图中查看is。输入上面的代码,每个评分员需要包含一行。

如果必须有一个表作为结果:如果必须有一个表作为结果:1)编写我前面的答案中描述的联合查询,然后2)编写一个使用联合作为输入并创建所需表的make table查询。另一方面,我认为工会给了你你所需要的。