【问题标题】:SQL: issue joining tablesSQL:问题连接表
【发布时间】:2017-07-08 02:34:21
【问题描述】:

我有以下两张表:

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 查询的了解是基本的,所以我不知道该怎么做。任何帮助将不胜感激!

【问题讨论】:

    标签: sql-server-2008 duplicates inner-join


    【解决方案1】:

    您可能需要通过 attr_value_idattr_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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      相关资源
      最近更新 更多