验证表中两个字段与另一个表中允许的组合的组合

时间:2018-03-18 12:18:49

标签: sql-server tsql

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中的条目可以验证多个组合)

如何通过简单的选择和连接解决这个问题?或者我是否需要更复杂的变量,循环等?

1 个答案:

答案 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