我有3张包含电影数据的表格。他们被称为骇人听闻,平均而且杰出。他们都有列title_types,流派,年份和评级。我正在尝试将所有3个表连接到一个名为facts的新表中,使用此提示:
仔细考虑这种联接类型 查询以避免丢失各个表中的记录。
我最初的想法是使用完全外连接加入所有表,并进行一些挖掘,这是我的代码
CREATE TABLE Facts as
SELECT Appalling.title_type, Average.title_type, Outstanding.title_type
FROM Appalling
FULL OUTER JOIN Average ON Appalling.title_type = Average.title_type
FULL OUTER JOIN Outstanding ON Appalling.title_type = Outstanding.title_type;
但是我不确定这是否是加入所有表格的最明智的方法。任何帮助表示赞赏。我相信最终的输出应该是这样的:
title_type | genre | year | appalling | average | outstanding
movie drama 1992 1 NULL NULL
tv comedy 2001 NULL 15 NULL
short drama 2014 NULL NULL 17
答案 0 :(得分:2)
这似乎是非常糟糕的数据架构设计。
您应该使用1个表格,其中只有一列表明某部电影是平均电影,还是未成年人电影。
但是,如果失败并且如果两个表中的其他列相似,则可以使用UNION ALL
:(已更新,因此您仍然可以区分。
CREATE TABLE Facts -- Data Types are for demo purposes, I have no idea what you use, use the appropriate data type yourself
(
column_types varchar(500),
title varchar(500),
genre varchar(500),
year int,
rating int,
ratingType varchar(500)
);
INSERT INTO Facts (column_types, title, genre, year, rating, ratingType)
(
SELECT a.column_types, a.title, a.genre, a.year, a.rating, 'Average' AS ratingType FROM Average AS a
UNION ALL
SELECT ap.column_types, ap.title, ap.genre, ap.year, ap.rating, 'Appalling' AS ratingType FROM Appalling AS ap
UNION ALL
SELECT o.column_types, o.title, o.genre, o.year, o.rating, 'Outstanding' AS ratingType FROM Outstanding AS o
);