有四个表
Service(Id, AssetId,PlanId)
Plan(Id)
Asset(Id)
NonServiceChargeAsset (ServiceId,AssetId)
Service Table
Id AssetId PlanId
A a 1
A b 1
A c 1
A d 1
B a 2
B b 2
B c 2
B d 2
C e 3
D f 3
Asset Table
Id
a
b
c
d
e
f
Plan Table
Id
1
2
3
NonServiceChargeAsset Table
ServiceId AssetId
A a
A b
B c
B d
Output
ServiceId AssetId PlanId
A c 1
A d 1
B a 2
B b 2
C e 3
D f 3
select
s.*
from
service s
full outer join
nonservicechargeAsset ns on s.id = ns.serviceid
where
s.assetid not in (select ns.assetid from nonservicechargeasset ns)
我不知道如何使用外部联接查询来获得上面的结果。
任何人都可以提供帮助和建议。
很抱歉,如果有人可以帮助重新格式化以帮助理解问题,那么内容很好。
答案 0 :(得分:1)
需要花费我一些时间才能理解您的目标,但我发现您需要服务表中的所有对行,它们的对(Id,AssetId)不在表 NonServiceChargeAsset 中>。假设那样,我会这样:
SELECT
s.*
FROM
Service AS s
LEFT JOIN
NonServiceChargeAsset AS ns ON ns.ServiceId = s.Id AND ns.AssetId = s.AssetId
WHERE
ns.AssetId IS NULL AND ns.ServiceId IS NULL