我正在尝试过滤查询的结果,但我无法完全得到我正在寻找的行为。
我有一个具有主键 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
,但它似乎不是我所需要的。谁能指出我正确的方向?