查看另一个表中显示的一个表中的值

时间:2014-08-28 08:38:32

标签: java sql db2

我有两张桌子,

'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 表,我使用的是squirrel及其DB2数据库。

有谁能告诉我我做错了什么?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);