2013-10-28 3 views
0

나는 내가 얻고 있어야한다고 생각하는 것에서 중복 된 값을 얻는 데 문제가 있습니다.그룹에서 이중 값 가져 오기

SELECT DISTINCT p.products_image, 
       pd.products_name, 
       p.products_id, 
       p.products_model, 
       p.manufacturers_id, 
       m.manufacturers_name, 
       p.products_price, 
       p.products_sort_order, 
       p.products_tax_class_id, 
       pd.products_viewed, 
       group_concat(p2i.icons_id separator ",") AS icon_ids, 
       group_concat(pi.icon_class separator ",") AS icon_class, 
       IF(s.status, s.specials_new_products_price, NULL) AS specials_new_products_price, 
       IF(s.status, s.specials_new_products_price, p.products_price) AS final_price 
FROM products p 
LEFT JOIN specials s ON p.products_id = s.products_id 
LEFT JOIN manufacturers m ON p.manufacturers_id = m.manufacturers_id 
JOIN products_description pd ON p.products_id = pd.products_id 
JOIN products_to_categories p2c ON p.products_id = p2c.products_id 
INNER JOIN products_specifications ps7 ON p.products_id = ps7.products_id 
LEFT JOIN products_to_icon p2i ON p.products_id = p2i.products_id 
LEFT JOIN products_icons pi ON p2i.icons_id = pi.icons_id 
WHERE p.products_status = '1' 
    AND pd.language_id = '1' 
    AND ps7.specification IN ('Polycotton' , 
          'Reflective') 
    AND ps7.specifications_id = '7' 
    AND ps7.language_id = '1' 
    AND p2c.categories_id = '21' 
GROUP BY p.products_id 
ORDER BY p.products_sort_order 

두 배 값을 받고 열은 그룹 concact에서 icon_ids입니다 :

여기 내 SQL입니다. 이 솔기는 ploycotton 및 반사음이 둘 다 ps7.specification 인 경우에만 발생합니다.

둘 중 하나 일 뿐이라면 제대로 작동합니다.

products_to_icon 테이블에는 products_id 및 icons_id의 두 열이 있습니다.

제품에 아이콘이 2 개있는 경우 2 개의 행이 있으므로 중복 아이콘 ID가 발생한다는 사실을 알고 있습니다. 나는이 프로그램을 실행할 때

, 2 개 아이콘이있는 제품에 대한 icon_ids 열은 "4,4,6,6"예를 들어, 내가 필요한 때 "(4, 6)은"

답변

0

뭔가 바보가 될 수 있지만 너의 질문에서 읽을 수있는 것을 위해. 나는

GROUP_CONCAT(`icon`) product 
icon1,icon1    Test1 
icon2     Test2 
icon3     Test3 


SELECT GROUP_CONCAT( `icon`) , product 
FROM `Test1` 
WHERE 1 
GROUP BY `product` 
LIMIT 0 , 30 

이 잘 작동하고 나는이 보이는 테이블 조회하고있어, 일부 더미 데이터로 시도 : 나는 다른 라인에서 Test1의 icon2를 추가하면이 결과

product icon 
Test1 icon1 
Test1 icon1 
Test2 icon2 
Test3 icon3 

나는 기본적으로 당신의 질문 아이디어가 맞다고 생각하지만, 어떤 이유로 당신은 중복을 가지고있다. (어떤 경우에는 행을 복제하는 일부 조인 또는 그룹핑 오류가있다.) 집계없이 쿼리를 실행하고 실제로 예상보다 많은 줄이 있는지 확인하십시오.

관련 문제