たとえば、レンタルアイテムを含むテーブルがあります
id | itemID | state
3 | 2 | 0
2 | 2 | 1
1 | 2 | 1
状態は、アイテムが過去にレンタルされたかどうかを表します。0 = currently rented
アイテムを含むテーブル:
id | item | condition
1 | showel | good
2 | saw | ok
現在レンタルされていないアイテムを選択したいのですが、最終的には次のようになりました。
SELECT * FROM
(
SELECT CASE WHEN b.itemID = a.id AND b.state = 0 THEN 1
ELSE 0 END AS itemState, a.condition AS condition
FROM items AS a
LEFT JOIN rented AS b ON a.id = b.item_id
) AS states
WHERE states.itemState = 0
しかし、SQL は saw[id=2] が現在空いていることを返していますが、それは正しくありません。
SQL文を修正する方法はありますか?
// 編集: レンタルされたテーブルに重複する itemID を保持する必要があります