저는 약간의 Shop-system을 보유하고 있으며 이제 특정 속성 및 조건을 가진 제품을 선택하려고합니다. 여기특정 속성으로 제품 검색
내 설정 :
테이블 XYZ는 :
- 는
- 는
- 는
그래서 지금은 속성-ID를 가지고 모든 제품을 선택합니다 attribute_group_id은 attribute_id PRODUCT_ID 1,3,5 및 7은 아니지만 9 및 2는 아닙니다.
간단한 방법으로 어떻게 할 수 있습니까? 첫 번째 아이디어는 제품 ID별로 그룹화하고 attribute_ids를 group_concat하고 "having"을 사용하여 원하는 속성 ID를 포함 및 제외하는 것입니다.
SELECT CONCAT('_',GROUP_CONCAT(attribute_id SEPARATOR '_'),'_') as attrs,
product_id
FROM my_table
GROUP BY product_id
HAVING (attrs LIKE '%_1_%'
AND attrs LIKE '%_3_%'
AND attrs LIKE '%_5_%'
AND attrs LIKE '%_7_%')
AND (attrs NOT LIKE '%_2_%'
AND attrs NOT LIKE '%_9_%')
이 방법이 효과적이지만 더 좋은 해결책이 있습니까?
문제는이 attrs가 모두있는 제품을 원한다면이 쿼리가이 attrs 중 하나를 가진 각 제품을 제공한다는 것입니다. – marco