我有一个视图,我在其中通过一系列左联接将外键值替换为其参考值。
这些表之一可以与我加入的多对一关系
Example.exampleid = SLA.exampleId.
我的问题是SLA表有一个列,其中
SLa.type
可以是A
或B
,然后SLA.value
将有一个数字。这会在我的视图中创建重复行,其中唯一的区别是SLA.type
和SLA.value
。我希望它返回
SLA.type
为A
的这些列,并且在表中找不到给定example.exampleId
的内容时仍不中断视图例如。我的视图选择查询简洁明了:
Select Example.exampleId, SLA.type, SLA.value
FROM Example
LEFT JOIN SLA ON Example.exampleId = SLA.exampleId
WHERE SLA.type <> "B" OR SLA.type IS NULL or SLA.value IS NULL
example.exampleId在SLA表中将永远只有两行,一行用于类型A,另一行用于类型B。
任何想法将不胜感激!
最佳答案
将SLA.type <> "B"
条件移到join子句中,因为它仅在这种情况下才适用于右侧列。在weher子句中,条件适用于整个数据集:
Select Example.exampleId, SLA.type, SLA.value
FROM Example
LEFT JOIN SLA ON Example.exampleId = SLA.exampleId and SLA.type <> "B"
虽然,我会考虑使用
SLA.type = "A"
,以防万一您将引入新的SLA类型。