クエリの結果をフィルタリングしようとしていますが、探している動作が得られません。
主キー ID を持つテーブル項目があります。
存在する可能性のあるプロパティがいくつかありますが、問題を引き起こしているのは「may」です。プロパティが一致する場合、またはプロパティが存在しない場合、アイテムを結果に含めたいと思います。
存在しなければならないプロパティについては、 を使用して、必要INNER 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
INNER JOIN
また、ColorId が設定されていない場合 (つまり、一部のパッケージは一般的で、特定のパッケージのみが追跡されます)、つまり 2 番目が空の結果を返す場合の結果も確認したいと思います。
試してみましたLEFT JOIN
が、必要なものではないようです。誰かが私を正しい方向に向けることができますか?