加入 3 tables INTO 1 new table
Join 3 tables INTO 1 new table
Table A = Clarity(唯一 ID = CaseID;包含 CSN)
Table B = 调查(唯一 ID = CSN)
Table C = QA(唯一 ID = caseID;包含 CSN)
Table D = 全数据
目标:
“TableD”包含:
全部“TableC”,
所有“TableA”与“Table C”有共同的“CaseID”和“CSN”
所有与“Table C”有共同“CSN”的“TableB”
Table 每天晚上重制。有很多人将对“Table D”进行查询研究。我认为它需要是 table 而不是视图。
我打算使用:
Create TableD AS
Select *
From TableC
Left Join TableA
ON TableA.CaseID = TableC.CaseID AND TableA.CSN = TableC.CSN
Left Join TableB
ON TableC.CSN = TableC.CSN
本来打算每天晚上用SQL代理制作脚本运行。这似乎太简单了。我必须删除前一天制作的 table 吗?有人看到错误吗?我正在使用 Microsoft SQL 服务器。
我假设您有一个 SQL 服务器数据库。
table 方法可能有优势,因为您说过很多人会出于 research/report 目的使用它。您不希望由于 reporting/research 的许多查询请求而使您的主应用程序 table 停滞不前。最好有一个单独的报告 table,这样您的主应用程序 table 就不会因为 reporting/research 目的而受到额外流量的影响。
如果您想使用table 方法,则可以使用以下脚本。我建议不要在 SELECT *
中使用 *
,因为您使用的 table 中有重复的列,例如 CaseID
和 CSN
;而是在 tableD.
中提及您想要的列列表
IF Object_id(N'TableD', N'U') IS NULL
BEGIN
SELECT *
INTO tabled
FROM tablec
LEFT JOIN tablea
ON tablea.caseid = tablec.caseid
AND tablea.csn = tablec.csn
LEFT JOIN tableb
ON tablec.csn = tablec.csn;
END
ELSE
BEGIN
DELETE
FROM tabled;
INSERT INTO tabled
SELECT *
FROM tablec
LEFT JOIN tablea
ON tablea.caseid = tablec.caseid
AND tablea.csn = tablec.csn
LEFT JOIN tableb
ON tablec.csn = tablec.csn;
END
Table A = Clarity(唯一 ID = CaseID;包含 CSN)
Table B = 调查(唯一 ID = CSN)
Table C = QA(唯一 ID = caseID;包含 CSN)
Table D = 全数据
目标:
“TableD”包含:
全部“TableC”,
所有“TableA”与“Table C”有共同的“CaseID”和“CSN”
所有与“Table C”有共同“CSN”的“TableB”
Table 每天晚上重制。有很多人将对“Table D”进行查询研究。我认为它需要是 table 而不是视图。
我打算使用:
Create TableD AS
Select *
From TableC
Left Join TableA
ON TableA.CaseID = TableC.CaseID AND TableA.CSN = TableC.CSN
Left Join TableB
ON TableC.CSN = TableC.CSN
本来打算每天晚上用SQL代理制作脚本运行。这似乎太简单了。我必须删除前一天制作的 table 吗?有人看到错误吗?我正在使用 Microsoft SQL 服务器。
我假设您有一个 SQL 服务器数据库。
table 方法可能有优势,因为您说过很多人会出于 research/report 目的使用它。您不希望由于 reporting/research 的许多查询请求而使您的主应用程序 table 停滞不前。最好有一个单独的报告 table,这样您的主应用程序 table 就不会因为 reporting/research 目的而受到额外流量的影响。
如果您想使用table 方法,则可以使用以下脚本。我建议不要在 SELECT *
中使用 *
,因为您使用的 table 中有重复的列,例如 CaseID
和 CSN
;而是在 tableD.
IF Object_id(N'TableD', N'U') IS NULL
BEGIN
SELECT *
INTO tabled
FROM tablec
LEFT JOIN tablea
ON tablea.caseid = tablec.caseid
AND tablea.csn = tablec.csn
LEFT JOIN tableb
ON tablec.csn = tablec.csn;
END
ELSE
BEGIN
DELETE
FROM tabled;
INSERT INTO tabled
SELECT *
FROM tablec
LEFT JOIN tablea
ON tablea.caseid = tablec.caseid
AND tablea.csn = tablec.csn
LEFT JOIN tableb
ON tablec.csn = tablec.csn;
END