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
위의 쿼리 내가 총 필드와 값을 하나 개의 결과를하고자하는 전체 필드와 값 2
로 10,230 기록을 각각 반환 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
'... 개수가 행으로 계산됩니다. 결과 중 하나 결과가 ... ... 허? –
* "filter_id 22 ** 및 ** 2"*가있는 제품 수를 반환해야합니다. 그러나 'HAVING count (product_id) = 1'은 22 ** 또는 ** 2를 의미합니다. –
명확성이 부족하여 죄송합니다. 제 질문을보다 명확하게 공식화했습니다. –