2017-02-18 66 views
1

我有以下兩個表:SQL:問題連接表

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(例如: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查詢的知識是基本的,所以我不知道該怎麼做。任何幫助將非常感激!

回答

2

您可能需要通過兩列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) 
+0

它很好用!謝謝! –