要直接回答您的问题,您可以更改您的模式,以便您从左连接表中返回的数据包含在SectionAUnolved中。您可以通过以下方式执行此操作:
- 直接将数据写入相应的列;或
- 具有您稍后更新批量
没有对你的问题太多背景空列。所以很难给你一个绝对的答案你的特定问题。但通常这将是你的问题的答案。
你不应该害怕连接,如果性能是一个问题,关键字段的索引和/或视图(物化与否)和/或分区的使用以及任何数量的其他性能增强工具是推荐的。
更新
@康斯坦丁 - Vasilcov的想法看起来像一个很好的可能性,但稍不正确(要求或不和)
select colums
FROM [SectionAUnresolved] a
left join sectionanotmarkedcounts [all]
on a.director=[all].employee
or a.rm=[all].employee
or a.rep=[all].employee
or a.css=[all].employee
or a.css2=[all].employee
但这会导致记录相乘,而不是问题,如果你随后可以与你的应用程序一起转动,虽然这不会提供关于使用什么关系的信息。因此,在您的模式中进行更改时,需要规范化您的SectionAnresolved表。
select ct.type, colums
FROM [SectionAUnresolved] a
left join SectionAUnresolved_countTypes ct
on ct.Unresolvedid = a.id
left join sectionanotmarkedcounts [all]
on ct.employee=[all].employee
其中:
- ct.type {主任,RM,代表,CSS,CSS2}
- “ct.Unresolvedid = a.id” - 新SectionAUnresolved_countTypes表链接到单节未分解的行
将连接数减少为2,并允许更多“countTypes”而不增加连接数或任何模式更改。
更新
感谢@康拉德 - 费利克斯,你可以使用一个case语句来确定使用了什么联接为每个返回的记录(见上面我的第一个代码片段)。这样做意味着您不必进一步标准化SecionAUnresolved表,但是您可能仍需要这样做,具体取决于性能。
从我的知识中,case语句没有编入索引,并且可能需要物化视图索引以进行优化。正常化仍然是一个更好的结构改进,国际海事组织。
无法以其当前形式回答。 –
你想用这些连接来达到什么目的?你期望的结果是什么? – horgh
你能给我们一些关于数据库表结构等的更多细节吗?我们无法以当前形式回答您的问题 –