2017-12-27 13 views
0

他の多対多テーブルの関連付けのすべての条件に一致するアイテムのみを返すクエリを作成する必要がありました。
これは、提供されたリストの子項目があるだけでは不十分ですが、提供されたリストの各項目ごとに子が存在しなければならないことを意味します。
だから、私はこのような何かに行ってきました:与えられたリスト内のすべてのアイテムを取得するためのSQLクエリの作成

select distinct ti.id 
    from table1 ti 
    where `sizeOfField2IdList` = 
      (
      select count(*) 
      from table2 t2 
      where t1.fieldX1 = t2.fieldY1 and t2.field2 IN (`field2IdList`) 
      ); 

誰もが私のニーズのためのより良い代替手段を提案することができますか?
私はこれが何か似たようなものを必要とする人を助けてくれることを願っています。

+0

サンプルデータと望ましい結果が実際に役立ちます。 –

答えて

0

は、提供されたリストの各項目ごとに存在する必要があります。

はいあり、このIDによってグループによる別の解決策は、であり、HAVINGsizeOfField2IdListに等しいフィールド2のカウントを使用:

SELECT ti.id 
frp, table1 as ti 
inner join table2 as t2 on t1.fieldX1 = t2.fieldY1 
Where t2.field2 IN ($field2IdList) 
group by ti.id 
HAVING COUNT(DISTINCT t2.field2) = $sizeOfField2IdList 

$field2IdList$sizeOfField2IdList双方が所定のように提供されると仮定するとクエリへの変数)

関連する問題