Table A: Customer, Item
Table B: Customer, Cust.Group
Table C: Item, Item.Group
Table D: Cust.group, Item.Group
我想验证表A中的组合与表D中允许的组合。我的问题是两个字段都与表格B和表C中的D表示相关。
(表B和C对于一个查询有多个返回,因为Customers和Items可以在多个组中,这意味着表A中的条目可以验证多个组合)
如何通过简单的选择和连接解决这个问题?或者我是否需要更复杂的变量,循环等?
答案 0 :(得分:0)
这应该是有效的行
select *
from tA
join tB
on tB.cust = tA.cust
join tC
on tC.item = tA.item
join tD
on tD.CustGroup tB.CustGroup
and tD.ItemGroup tC.ItemGroup
这是无效行
select *
from tA
join tB
on tB.cust = tA.cust
join tC
on tC.item = tA.item
left join tD
on tD.CustGroup tB.CustGroup
and tD.ItemGroup tC.ItemGroup
where tD.CustGroup is null