나는 현재 완벽하게 작동 다음 쿼리 사용 :MySQL의 : 카테고리별로 분류 항목 계산
SELECT * FROM `items` WHERE `id` IN
(SELECT `item_id` FROM `categories_items`
WHERE `category_id` IN (1, 2) GROUP BY `item_id`
HAVING COUNT(`item_id`) = 2);
그것은 모든 선택 (체크 박스)의 범주에있는 모든 항목을 선택합니다.
문제는 대부분의 항목이 여러 범주에 있고 몇 가지 항목이 두 범주에만 있고 그 중 두 항목 만 확인하면 여전히 수백 개의 항목 목록이 표시되어 항목을 찾을 수 없다는 것입니다. 몇 가지 범주에 속합니다.
내 첫 번째 아이디어는 어딘가에 쿼리에 ORDER BY "number_of_total_categories_that_the_selected_item_is_in" ASC
을 추가하는 것이었지만 현재의 도움말을 얻었고 아마도 많은 계산/하위 쿼리가 작동하기 때문에 추가 열을 생각했습니다. 그 안에있는 카테고리 수를 보유 할 테이블 items
!
- 효과적인 ORDER BY 절을 쿼리에 추가 할 수 있습니까? 그렇다면 어떤 모양입니까?
- 다른 아이디어가 있습니까? "거꾸로 된"외래 키 솔루션이 여기에서 작동합니까? 기회는 아니지, 그렇지? : p
만약 내가 필요하다고 생각하면 수동으로 category_count
열을 items
번으로 업데이트해야한다고 생각할 수 있습니다.
편집 : Table field that holds row count from another table이 재미있어 보이지만 MySQL에서 작동하는지는 잘 모릅니다.
답장을 보내 주셔서 감사합니다. SELECT는 작동하지만 ORDER BY는 작동하지 않습니다. 문제는 쿼리가 각 항목이있는 모든 항목 대신 선택된 범주를 계산한다는 것입니다. – LGT
몇 가지 테스트를 마치면 이것이 완벽하게 작동하는 것 같습니다! 나는 그것을 많이 고맙다. – LGT