[モンスター] と [タイプ] の間に多対多の関係を形成する 3 つのテーブルがあります。
monsters, monsters_types, types
私は、それぞれいくつかの関連する[タイプ]を持つ次のモンスターを持っています
MONSTERS.name | TYPES.name
===============|===============
sharkthing | fish
sharkthing | human
|
werewolf | human
werewolf | wolf
werewolf | warrior
|
blob | ooze
|
thefly | insect
thefly | human
タイプ「(オオカミor昆虫)AND(人間)」と関係があるモンスターを全て見つけたいので、その式で取得したい
MONSTERS.name
===============
werewolf
thefly
以下は私のクエリです:
SELECT monsters.name from monsters
JOIN monsters_types
ON monsters_types.monster_id = monster.id
JOIN types
ON types.id = monsters_types.type_id
WHERE (types.name = 'wolf' OR types.name = 'insect') AND types.name = 'human'
AND 演算子があるため、これは機能しませんtype.nameフィールドは同時に「人間」と他の何かの両方になることはできません。
IN ステートメントの使用を検討しましたが、渡された式に基づいて動的にクエリを作成しているため、うまく機能しません。上の表の場合、URL の例は次のようになります。
www.example.com/listmonsters?type=(wolf|insect),human
複雑な式で指定された関連する[タイプ]を持つすべての[モンスター]を選択することはできますか?