我的表合约如下:
这里的item_id
是一个主键,用作Contract_attr
上的外键:
我想返回2列,一个是合约#(0000000903),每个ATTR_Val for field_id = 238,field_id = 326(N,N)。
这是我到目前为止所做的:
SELECT distinct [CONTRACT].item_name, [CONTRACT_ATTR].ATTR_VAL
FROM [dbo].[CONTRACT]
JOIN [CONTRACT_ATTR]
ON [CONTRACT].item_name = [CONTRACT_ATTR].ATTR_VAL AND [CONTRACT_ATTR].item_id = 17
17在实践中将是动态的。但是通过这个查询我得到了两次合同#:
编辑:如果我添加AND [CONTRACT_ATTR].field_id in (238, 326)
,我什么都不回来。
我做错了什么以及如何解决?
答案 0 :(得分:1)
您可以更改ON
子句
SELECT DISTINCT CO.item_name, CA.ATTR_VAL
FROM [dbo].[CONTRACT] CO
JOIN [CONTRACT_ATTR] CA ON CA.Item_Id = CO.Item_Id
WHERE CA.Item_Id = 17 AND CA.field_id in (238, 326)
在ON
子句中,您使用item_name
和ATTR_VAL
进行匹配。它返回错误的结果。