回答

收藏

从相关子表创建视图

技术问答 技术问答 337 人阅读 | 0 人回复 | 2023-09-12

我有以下常规表格结构(原谅了以美国为中心的汽车制造商在我的例子中):% U2 _' `0 c) t6 ]# Z0 h% L/ s
CREATE TABLE Car  [Id] int PRIMARY KEY)CREATE TABLE Ford  [FordId] int PRIMARY KEY,--also a foreign key on Car    [Model]  nvarchar(max))CREATE TABLE Chevy  [ChevyId] int PRIMARY KEY,--also a foreign key on Car    [Model]  nvarchar(max))我想在这些表的顶部创建一个视图,以检索所有的视图Fords和Chevys,视图中只有一列可以告诉我。我的第一根刺是:
, n( M' @5 H: G- E  DSELECT     c.CarId,   case when f.FordId is not null then 'Ford' else 'Chevy' end FROM Car as cLEFT JOIN Ford as f on c.Id = f.FordIdLEFT JOIN Chevy as ch on c.Id = ch.ChevyIdWHERE (f.FordId is not null or ch.ChevyId is not null)但这会让我口中难闻,我担心表现。我会更好地独立CTE值得检索所有福特和雪佛兰,然后联合起来吗?我完全走错了轨道吗?我还需要包括Model列(以及两个子表共有的其他列)显然会把我的观点变成一系列巨大的列case语句。处理这种情况的正确方法是什么?! J1 c: E4 d+ a, N4 P) {; h
编辑    :我想我应该补充一点,这个架构已经存在了,所以我不能改变基础表。0 m9 J: z& B. a/ J5 p" `) l
                                                                # F- F8 a* Y) f5 q/ l; _
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则