0
私は最適化したいクエリがあります。私はこのクエリーを改善できると確信しています。mysqlのリンクテーブル+結合+カウント
この結果、filter_id 22と2を持つ商品の数が返され、 'yes'と表示されます。
がSELECT COUNT(product_id) AS Total
FROM kkx_filters_products
LEFT JOIN kkx_products ON product_id = kkx_products.id
WHERE filter_id IN (2,22)
AND kkx_products.display = 'yes'
GROUP BY product_id
HAVING count(product_id) = 2
上記のクエリは、私が合計フィールドと値の結果を1つ欲しい合計フィールドと値2
で10230のレコードのそれぞれを返す10230.
私はの構造を含めましたテーブルがクエリで使用されています。
EXPLAIN kkx_filters;
Field Type Null Key Default Extra
id int(11) unsigned NO PRI NULL auto_increment
name varchar(50) NO
EXPLAIN kkx_filters_products;
Field Type Null Key Default Extra
filter_id int(11) NO PRI 0
product_id int(11) NO PRI 0
EXPLAIN kkx_products;
Field Type Null Key Default Extra
id int(11) NO PRI NULL auto_increment
title varchar(255) NO
display enum('yes','no') NO yes
'...カウントが行... 1つの結果に結果が表示されます。 –
* "は、filter_id 22 **と** 2"を持つ製品の数を返します。*しかし、 'HAVING count(product_id)= 1'は、22 **または** 2を意味します。 –
わかりにくいことに申し訳ありませんが、私は質問をより明確に定式化しました –