このテーブルがあるとします:
| | ID | id サービス | | | 1 | 5 | | | 1 | 10 | | | 2 | 5 | | | 2 | 15 | | | 3 | 5 | | | 3 | 20 | | | 4 | 5 | | | 4 | 25 |製品 5 が他の製品 (10、15、20、25) の少なくとも 1 つと共に存在するすべてのクライアント (ID) を選択できるようにしたいと考えています。
クエリとの組み合わせの1つに対してそれを行うことができます:
SELECT ID FROM table WHERE idService IN (5,10) GROUP BY ID HAVING COUNT(DISTINCT idService) = 2
ただし、このクエリに他の条件を追加すると、少なくとも 2 つの製品を持つすべてのクライアントが取得されます。
SELECT ID FROM table WHERE idService IN (5,10) OR idService IN (5,15) OR idService IN (5,20) OR idService IN (5,25) GROUP BY ID HAVING COUNT(DISTINCT idService) = 2
IN 句を変更するか、それらを置き換えて、4 つの有効な組み合わせのいずれかを持つクライアントのみを取得できるかどうか疑問に思っています。
編集:
サブクエリを使用してクエリを機能させることができました。
SELECT ID FROM table WHERE ID IN ( SELECT ID FROM table WHERE idService =5) AND ( idService =10 OR idService =15 OR idService =20 OR idService =25 ) GROUP BY idSPOrder