製品フィルタ機能を追加しようとしています。各製品は、任意の数のフィルタを有することができる。フィルタから選択するMYSQLクエリ
私はそうのように私のテーブルを設定している:
row_id products_id filters_id
1 1 1
2 2 2
3 3 3
4 4 3
5 1 3
ので、表にはproduct_idsと対応filter_idsのリストを持っています。このような単純な表のように見えるので、私はスクリプトが簡単だと考えました。しかし、私は本当にそれの周りに私の頭を得るために苦労しています。ただ一つのフィルタを選択した場合、一例として
SELECT p.products_id
, p.products_name
, p.products_short_desc
, p.products_price
, p.products_url
, p.products_image
, p.products_short_desc
, p.contact_pricing
, GROUP_CONCAT(ptc.categories_id) category_id
FROM products p
LEFT
JOIN prod_to_cat ptc
ON ptc.products_id = p.products_id
AND ptc.categories_id IN (3)
WHERE p.products_status = 1
GROUP
BY p.products_id
HAVING COUNT(DISTINCT ptc.categories_id) = 1
ORDER
BY p.products_price
、それはこれも非常に微調整して、正常に動作しなかったID 3.ました:私が得た
ありクエリがありました。それはまた、私が思っていたことがとてもシンプルだったと思うので、複雑に見えます。
本質的に、このテーブルでは、すべての一致するfilters_idを持つすべての商品を選択することができますか?
フィルタ1と3が選択された場合、一致するすべての商品、つまり商品IDと対応するfilter_idsの表にある商品の結果を得たいと考えています。この例では、products_id 1を返します。フィルタ3が選択された場合、製品3,4が返されます。これはどのように達成されますか?
だから、フィルタ1と3は、出力が行ID 1,3,4,5を表示していまし選択した場合は? – Jeff
いいえ、そのORではなく、ANDです。フィルタ1と3が選択された場合は、products_id1だけが表示されます。例えば。あなたは赤いドレス、サイズのミディアム、赤いドレスやミディアムドレスが欲しい。 – Source
私は、フィルタがオブジェクトの複数の列(プロパティ)に適用されているかどうかわかりませんか? – Jeff