我有以下两个表:
attributevalueassign
itm_id attr_value_id attr_id
----- ------------- -------
396 237 1
396 20 2
715 274 1
715 16 2
attributevalue
attr_id attr_value_id attr_value
------- ------------- ----------
1 237 3055020
1 274 2454518
2 16 Dunlop
2 20 Vogue
我需要能够编写一个查询,当我提供item_id(ex:396)时,我得到以下结果:
itm_id attr_value_id attr_id attr_value
------ ------------- ------- ----------
396 237 1 3055020
396 20 2 Vogue
当我尝试使用INNER JOIN时,得到的行比我想要的多:
SELECT dbo.select_attributevalue.attr_value, dbo.select_attributevalueassign.itm_id
FROM dbo.select_attributevalueassign INNER JOIN
dbo.select_attributevalue ON dbo.select_attributevalueassign.attr_id = dbo.select_attributevalue.attr_id
WHERE (dbo.select_attributevalueassign.itm_id = 396)
itm_id attr_value_id attr_id attr_value
------ ------------- ------- ----------
396 237 1 3055020
396 237 1 2454518
396 20 2 Dunlop
396 20 2 Vogue
因此,我的想法是我可能不应该使用JOIN,但是我不知道替代方案是什么。我在该站点上四处寻找解决方案,并且有很多关于如何使用联接删除重复记录的问题,但是我没有看到与我所问的类似的问题。我对SQL查询的知识是基础知识,所以我不确定该怎么做。任何帮助将非常感激!
您可能需要通过两列attr_value_id
和进行内部联接attr_id
。试试这个查询:
SELECT dbo.select_attributevalue.attr_value, dbo.select_attributevalueassign.itm_id
FROM dbo.select_attributevalueassign
INNER JOIN dbo.select_attributevalue ON
dbo.select_attributevalueassign.attr_id = dbo.select_attributevalue.attr_id
AND dbo.select_attributevalueassign.attr_value_id = dbo.select_attributevalue.attr_value_id
WHERE (dbo.select_attributevalueassign.itm_id = 396)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句