我是使用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 ...
我在正确的轨道上吗?
答案 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