私は一連の製品を用意しています。それぞれの製品にはフィルタが関連付けられています。したがって、私は持っています:WHERE IN句の列を2回使用する
table: products {id, name}
table: filters {id, name, type}
table filters_to_products {id, filter_id, product_id}
使用される外部キーはありません。すべてが論理的に実装されています。
私のフィルタは2つのタイプがあります。サイズと色
問題:私は色のセットと、少なくとも一つの大きさからから少なくとも1つの色を持っている製品を選択しますしかし、
select * from products
left join filters_to_products
on products.id = filters_to_products.product_id
where filters_to_products.filter_id in (1,2,3,4);
上記のクエリ:サイズのセットは、それゆえWHERE IN
句は、基本的には、私の心に来るが、それは動作しません、なぜなら技術的には動作しますが間違いがありますが、タイプの色とサイズのフィルタが同じかっこで混在しているため、2つの異なるWHERE IN節を作成すると思います。
どうすればよいですか?ソリューションにはネストされたクエリと関連があると思います。もしそうなら、私はそれにどのようにアプローチすべきですか?
'filter_to_products'はテーブルであり、したがって、'、IN filter_to_products(1、 2,3,4)はナンセンスです。このクエリはそのまま実行されません。いくつかのサンプルデータと希望の結果を共有できれば、説明だけで必要なものが明確ではないため、より簡単にお手伝いできます。 – JNevill
はフィルタまたはfilters_to_products構造を参照する必要があります。私はあなたがkey'dペアを使用しているか、どの列 'サイズ'と色がどのテーブルにあるのかわかりません。サンプルデータはいつもプラスの質問です。 – xQbert
私は明らかに私の問題を述べました。私の質問は構文上の問題(質問を入力するときに作成される)とは関係ありません。 –