sql - 使用多个表插入到一个表中
问题描述
我是使用 SQL Server 的新手。我有一个作业,讲师没有向我们展示如何使用他希望完成作业的工具。
我正在尝试提出一个查询,该查询将插入 3 个维度表的主键,并尝试将来自源数据的数据插入另一个表中。
源数据是 Google Play Store 上 10000+ 个应用的数据集。
请参阅下面的表格和我需要什么
DimContentRating
- 有 6 个内容分级
ContentRatingID(PK) Content Rating
--------------- --------------
1 Everyone
2 Teen
DimCategory
- 有34个类别
CategoryID(PK) Category
---------- --------
1 Education
2 Finance
DimInstalls
- 有许多安装范围
InstallID(PK) Installs
---------- --------
1 10000+
2 100000+
googleplaystore
- 包含 10000 多条记录和原始数据的表
App Category Rating Reviews Installs Price Content_Rating
--- -------- ------ ------ -------- ----- --------------
GMAT
Question Education 4.2 240 10000+ Free Everyone
Bank
Ace Elite Finance 4.1 2898 100000+ Free Everyone
我需要它的样子
AppFact - 需要从上面的表中分解并使用外键链接插入的表
AppFactID Category Rating Reviews Installs Price Content_Rating
--------- -------- ------ ------ -------- ----- --------------
1 1 4.2 240 1 Free 1
2 2 4.1 2898 2 Free 1
我很抱歉没有尝试编写查询以使其正常工作,但我没有得到太多关于 SQL Server 的信息,所以我所知道的最好的是一般查询。我所知道的是我需要使用以下以及可能的内部连接?
INSERT INTO AppFact(...)
SELECT ...
FROM ...
我在正确的轨道上吗?
解决方案
假设您已经AppFact
使用 PK创建了表AppFactID
,您要查找的查询是:
INSERT INTO AppFact (Category, Rating, Reviews, Installs, Price, Content_Rating)
SELECT c.CategoryID, a.Rating, a.Reviews, i.Installs, a.Price, r.ContentRatingID
FROM googleplaystore a
INNER JOIN DimContentRating r ON a.Content_Rating = r.Content_Rating
INNER JOIN DimCategory c ON a.Category = c.Category
INNER JOIN DimInstalls i ON a.Installs = i.Installs
你应该看看SQL Server 中的 JOIN
推荐阅读
- java - Spring JmsTemplate.setMessageId 被覆盖
- python - pytest 不接受自定义参数值
- azure - Azure 数据工厂参数/扩展属性值前导特殊字符问题
- oracle - 行返回条件后如何刷新区域?
- php - TCPDF 不使用 imageSVG 在文本文件中使用路径变量渲染点(圆圈)
- c - 在具有位置的数组中插入元素
- python - 如何矢量化熊猫数据框中的比较?
- ios - PageViewController - 禁用反弹问题
- mysql - 为什么 Hibernate executeUpdate 很慢?
- reactjs - Immer 减速器不适用于 Typescript