0

我正在尝试过滤查询的结果,但我无法完全得到我正在寻找的行为。

我有一个具有主键 ID 的表项。

可能存在几个属性,正是“可能”导致了我的问题。如果满足该属性或该属性不存在,我希望该项目包含在结果中。

对于必须存在的属性,我使用 anINNER JOIN来获得我想要的。

对于那些可能存在的,我得到了满足属性的结果,但不是空的。

例如

SELECT id, name
FROM item
INNER JOIN itemWhereTable ON 
( item.id = itemWhereTable.itemID AND itemWhereTable.locationID = 13 )
INNER JOIN itemColorTable ON 
( item.ID = itemColorTable.itemID AND itemColorTable.ColorID = 2 )
WHERE 
item.minCost <=50

我还想查看未设置 ColorId 的结果(即,某些包装是通用的,仅跟踪特定的包装),即第二个包装INNER JOIN返回空结果。

我试过了LEFT JOIN,但它似乎不是我所需要的。谁能指出我正确的方向?

4

1 回答 1

1

你可以这样做:

AND itemColorTable.ColorID IS NULL

或者AND itemColorTable.ColorID = 2 OR itemColorTable.ColorID IS NULL

于 2013-05-07T22:25:44.997 回答