首页 > 解决方案 > 使用多个表插入到一个表中

问题描述

我是使用 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 ... 

我在正确的轨道上吗?

标签: sqlsql-serverssmssql-server-2017

解决方案


假设您已经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


推荐阅读