我有两张桌子,
'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数据库。
有谁能告诉我我做错了什么?
答案 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);