使用JOIN返回多个查找字段

时间:2017-03-17 17:59:12

标签: sql sql-server

我的表合约如下:

enter image description here

这里的item_id是一个主键,用作Contract_attr上的外键:

enter image description here

我想返回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在实践中将是动态的。但是通过这个查询我得到了两次合同#:

enter image description here

编辑:如果我添加AND [CONTRACT_ATTR].field_id in (238, 326),我什么都不回来。

我做错了什么以及如何解决?

1 个答案:

答案 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_nameATTR_VAL进行匹配。它返回错误的结果。