2014-08-28 33 views
0

我有2个表中的值,看到一个表出现在另一个表

'prodAtt' 
attID, prodID 
218, 11 
219, 11 
220, 10 
221, 10 
222, 15 
223, 15 

'attrdef' 
attID, attName 
218, a 
219, b 
220, c 
221, e 
222, f 
223, g 

我希望看到所有有PRODID或10或11

我已经试过attrdef行

select * from ATTRdEF inner JOIN PRODATT on PRODATT.PRODUCT_ID = 11 or PRODATT.PRODUCT_ID = 10 

但这返回整个attrdef表,我使用松鼠及其DB2数据库。

有人可以告诉我我做错了什么吗?

回答

1

你不指定如何表prodAtt应与表attrdef被连接,所以任何过滤您尝试通过加入另一种实现表不起作用。你必须告诉你的数据库你想加入两个表的列,然后你可以添加你的WHERE条款来过滤结果。

看着表,你应该加入他们列attID

SELECT a.attID 
     , a.attName 
FROM ATTRDEF a 
     INNER JOIN PRODATT p ON a.ATTID = p.ATTID 
WHERE p.prodID IN (10, 11); 
+0

感谢,既为我工作,但这个解释我在做什么错了,非常感谢。 – f1wade 2014-08-28 11:59:17

1

与尝试,

SELECT * FROM 
    ATTRDEF a INNER JOIN PRODATT p 
     ON a.ATTID = p.ATTID 
WHERE p.PRODID IN (10, 11); 

或者,

SELECT * FROM 
    ATTRDEF a, PRODATT p 
WHERE a.ATTID = p.ATTID 
    AND a.PRODID IN (10, 11);