2013-03-20 1 views
0

mySQL 쿼리 - 약 1000 개의 행을 포함하는 'table_product_options'테이블이 있습니다. 이 테이블은 각 'product_id'에 대해 4x 행을 포함해야합니다. 동일한 제품이 각 'customer_group'에 할당됩니다 (아래 그림 참조). 이 값은 customer_group 당 ~ 250 개의 행과 동일해야합니다.mySQL 중복 된 행에서 누락 된 항목 찾기

그러나, I는 각 'customer_group'에 COUNT를 실행하고,이 + C (250 행 그룹마다 총 그룹 누락 항목의 소수가 있다는 것을 발견 하였다 B + d이지만 그룹에 대해서만 245 행 + c).

+----------------+----------------+ 
| product_id  | customer_group | 
+----------------+----------------+ 
|  1  |  a  | } 
|  1  |  b  | } 
|  1  |  c  | }-each 'product_id' has 4x 'customer_group' attached 
|  1  |  d  | } 
|  2  |  a  | 
|  2  |  b  | 
|  2  |  c  | << 1 missing entry (customer_group = d) 
|  3  |  a  | << 3 missing entries (customer_group = b, c, d) 
+----------------+----------------+ 
내가 SELECT 쿼리 (또는 대체) 미만 4 개 행을 할당 한 'PRODUCT_ID'하는 표시를 실행할 수있는 방법

? 또는 다른 말로, 누락 된 항목을 어떻게 찾을 수 있습니까?

어디에도 존재하지 않는 SELECT와 결합 된 여러 가지 쿼리를 시도했지만 아이디어가 부족합니다. stackoverflow 답변을 수십 개 수정했지만 어느 것도 적합하지 않으며 구문을 수정하지 못했습니다.

모든 도움을 주시면 감사하겠습니다 (앞으로 다시 같은 문제가 발생할 것으로 예상되므로). 나는 눈으로 테이블을 샅샅이 뒤져 버릴지도 모른다!

+0

결과적으로 무엇이 좋을까요? – Strawberry

+0

선택한 답변 (아래)은 product_id를 목록에 표시하는 "이상한 항목"을 나열합니다. – abe

답변

0
select product_id, count(customer_group) 
from table_product_options 
group by product_id 
having count(customer_group) < 4 

줄을 바꾸거나 줄 바꿔야 할 수도 있습니다. 나는 명령을 혼란스럽게한다.

+0

완벽한, 정말 고마워! 주문이 정확했습니다. – abe

0

누락 된 그룹을 찾기위한 가능한 조합을 구성하십시오.

select product_id, indicator, case when indicator = 1 
            case when availe = 'a' then 'b,c,d' 
            when availe = 'b' then 'a,c,d' 
            when availe = 'c' then 'a,b,d' 
            else 'a,b,c' end 
           case when indicator = 2 
            case when availe = 'a,b' then 'c,d' 
       //Like wise Give the possible combination for finding missing group 
           end as missing_group 
from 
(select product_id, count(customer_group) as indicator, group_concat(customer_group) as availe 
from table_product_options 
group by product_id) a where indicator < 4 
+0

귀하의 기여에 감사드립니다! 나는 다른 답변을 먼저 선택 했으므로 가장 간단한 해결책입니다. 이것은 더 깊이 보이지만 그것을 밖으로 시도 할 것입니다 :) – abe