我目前正在从事个人项目,我可以稍微帮忙一下。
方案:
我自己创建了一个数据库(MS Access)以及一些朋友曾经看过的电影。我们在IMDb上对所有电影进行了评分,并使用导出功能获取所有电影数据和我们的电影评级。我计划对Excel进行一些总结分析。我对SQL和关系数据库的经验很少,但我真的很喜欢它,这个项目帮助我更好地理解它。
问题:
这是我的表格所存储的所有电影信息(const
用作主键。):
然后,对于每个评估者,我都有一个单独的表格,其中const
和[You rated]
作为列,如此处显示的詹姆斯'评级:
我想将所有单独的表格用于评级,并将它们压缩到一个表格,其中包含以下列:rater
(即James,Alex,Doug),{{1} }和const
。我该怎么做呢?
答案 0 :(得分:0)
如果您以一致的方式命名持有评级的各个表,最简单的方法是使用vba函数从不同的表中提取数据并将其插入新表中。
例如,如果您有一个新表ratings (rater, const, yourrating)
并希望从名为R_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
将其添加为可视化基本模块,并在需要时调整列名后运行它。
答案 1 :(得分:0)
您可以使用类似
的联合查询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视图中。输入上面的代码,每个评估者需要包含1行。