使用多个表插入一个表

时间:2018-12-10 16:18:44

标签: sql sql-server ssms sql-server-2017

我是使用SQL Server的新手。我有一个作业,而讲师没有向我们展示如何使用他希望完成作业的工具。

我试图提出一个查询,该查询将3维表的主键插入其中,并尝试将源数据中的数据插入另一个表中。

源数据是Google Play商店上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 ... 

我在正确的轨道上吗?

1 个答案:

答案 0 :(得分:1)

假设您已经用PK AppFact创建了表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

您应该看一下JOINs in SQL Server