AnimalId Feature Present
-------- ------- -------
1 Teeth Yes
1 Leg Yes
2 Teeth No
2 Leg Yes
3 Teeth Yes
3 Leg Yes
下記の構造を持つテーブルの動物を持って、両方の歯とレージュは私が書かれている「はい」 ある場合、私はanimalidを取得する必要があります
select distinct A1.AnimalId from Animal A1
inner join Animal A2 on
A1.AnimalId =
(select distinct A2.AnimalId from Animal A2
inner join Animal A3 on
A2.AnimalId =
(select distinct A3.AnimalId from Animal A3 where A3.Feature = 'Leg' and A3.Present = 'Yes' group by A3.AnimalId)
where A2.Feature = 'Teeth' and A2.Present = 'Yes' group by A2.AnimalId)
とその作業のようなクエリ。
これを書き、同じ結果を達成するためのより良い方法がありますか?
なぜあなたは全く参加している:?
where
句は、に簡素化することができますかテーブルを照会して "where"節を使用するだけです... –恐ろしいEAV([エンティティ属性値モデル](https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80)に注意してください%93value_model));これは一般的に、あなたが見つけたように、大変な質問をしています。 –