質問

私を困惑させるn:m関係の非常に単純な例。 2つのテーブル" Plant"があると仮定します。および「属性」また、IDとの関係を保持する別のテーブル:

Plant--------hasAttribute--------Attribute
               P1 | A1
               P1 | A2
               P1 | A3
               P2 | A1
               P2 | A2
               P3 | A2
               P3 | A3 

したがって、プラント1には属性1、2、および3があります。プラント2には属性1および2があり、プラント3には属性2および3があります。 今、1つのクエリで、どのように取得できますか?属性2および3を持つすべての植物? 結果はP1とP3を返します。どちらも属性2と3を持っているためです。 ユニオンを試していましたが、結果としてP2が得られます...何かアイデアはありますか?

役に立ちましたか?

解決

複数の列に一致する明確な結果を提供するSQLクエリ

これはあなたが探しているものですか?

他のヒント

このクエリ構造により、個別の句が不要になります(解決テーブルに重複するレコードがない場合)。

SELECT p.PlantID
FROM
  Plant p INNER JOIN PlantAttribute pa
    ON p.PlantID = pa.PlantID AND pa.AttributeID = 1
  INNER JOIN PlantAttribute pa2
    ON p.PlantID = pa2.PlantID AND pa2.AttributeID = 2;
select * from Plants p where 2 = ( 
  select count(*) from HasPlants h
     where h.pid = p.id and h.aid in ( a2, a3 ) 
  )
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top