製品に特定のフィルターが適用されたすべての製品 ID を選択する MySQL クエリがあります。このクエリは機能しますが、このクエリを改善する方法を学びたいです。このクエリの代替案は、説明とともに歓迎されます。
kkx_products WHERE display = 'yes' AND id in kkx_products から kkx_products.id を選択 (SELECT product_id FROM `kkx_filters_products` WHERE `filter_id` in (SELECT id FROM `kkx_filters` WHERE kkx_filters.urlname = "comics" OR kkx_filters.urlname = "comicsgraphicnovels") count(*) = 2 の product_id でグループ化) ORDER BY kkx_products.id desc LIMIT 0, 24
クエリで使用されているテーブルの構造を含めました。
説明しkkx_filters
ます。
フィールド タイプ Null キー デフォルト エクストラ id int(11) unsigned NO PRI NULL auto_increment 名前 varchar(50) NO filtergroup_id int(11) はい MUL NULL urlname varchar(50) NO MUL NULL date_modified タイムスタンプ NO CURRENT_TIMESTAMP orderid float(11,2) NO NULL
説明しkkx_filters_products
ます。
フィールド タイプ Null キー デフォルト エクストラ filter_id int(11) いいえ PRI 0 product_id int(11) いいえ PRI 0
説明しkkx_products
ます。
フィールド タイプ Null キー デフォルト エクストラ id int(11) いいえ PRI NULL auto_increment タイトル varchar(255) いいえ urlname varchar(50) NO MUL 説明 ロングテキスト NO NULL price float(11,2) NO NULL orderid float(11,2) NO NULL imageurl varchar(255) いいえ date_created 日時 NO NULL date_modified タイムスタンプ NO CURRENT_TIMESTAMP created_by varchar(11) NO NULL modified_by varchar(11) NO NULL 製品番号 varchar(32) NO instock enum('yes','no') いいえ はい 表示列挙型('yes','no') NO はい