回答

收藏

从相关子表创建视图

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

我有以下常规表格结构(原谅了以美国为中心的汽车制造商在我的例子中):
! m+ U: K/ ^1 {; k  \1 W$ ^) SCREATE 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,视图中只有一列可以告诉我。我的第一根刺是:
3 W! B' f+ k3 M7 O4 c2 ISELECT     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语句。处理这种情况的正确方法是什么?) X8 S" A  R4 q2 Q
编辑    :我想我应该补充一点,这个架构已经存在了,所以我不能改变基础表。& m; |5 N2 V! ?) ~( |6 |3 Q- l8 H
                                                               
1 s+ ^  J: P6 ^7 H    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则