SQL:问题联接表

迈克尔·索布恰克(Michael Sobczak)

我有以下两个表:

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查询的知识是基础知识,所以我不确定该怎么做。任何帮助将非常感激!

伊凡·格里申科(Ivan Gritsenko)

您可能需要通过两列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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章