2013-07-05 4 views
1

이 쿼리를 작성하여 어떤 카테고리를 판매하는 상점 목록을 찾았습니다. 내가 지금 원하는 것은 무엇인가와 같은mysql group_concat 쉼표로 구분 된 이름으로 일치하는

+---------------------------------------+------------+ 
| category_ids       | vendor_ids | 
+---------------------------------------+------------+ 
| 24,28,25,16,26,23,27,2    |   3 | 
| 2          |   67 | 
| 19,28,17,16,20,2      |   68 | 
| 19,28,24,26,23,21,16,27,22,17,25,2 |  122 | 
| 16,2         |  123 | 
| 28,17,22,21,18,16,26,27,20,23,25,2 |  124 | 
| 22,19,21,20,16,24,28,25,23,26,2  |  125 | 
| 23,24,26,25,28,16,20,27,19,2   |  126 | 
| 19,26,28,18,20,27,22,16    |  127 | 
| 22,26,28,21,23,20,24,19,16,17,27,25,2 |  128 | 
| 2          |  129 | 
| 2          |  133 | 
| 19,20,28,16,27,25,21,23,26,24,22  |  135 | 
| 23,28,17,22,26,21,16,20,27,24,25,2 |  136 | 
| 19,17,16,21,23,26,22,25,27,20,28  |  137 | 
| 19,20,26,22,21,24,23,17,28,16,27,25,2 |  138 | 
| 19,20,23,28,26,21,24,16,27,22,25,17,2 |  139 | 
| 22,27,20,21,24,17,23,28,26,19,25,2 |  142 | 
| 19,28,17,20,2       |  143 | 
+---------------------------------------+------------+ 
19 rows in set (0.01 sec) 

입니다

SELECT GROUP_CONCAT(distinct(sub_category_id)) AS s, 
      vendor_id AS v 
     FROM link_products_lists_vendors 
     GROUP BY vendor_id; 

이 결과,

+-------------------------- -----------+--- ----------+ 
| category_names      | vendor_names | 
+---------------------------------------+--------------+ 
| mobiles,laptops,desktops    | abcShop | 
| mobiles        | xyzShop | 
| desktops,mouses,keyboards    | pqrShop | 
+---------------------------------------+--------------+ 

나는 같은 범주 테이블,

+----+---------------+ 
| id | name   | 
+----+---------------+ 
| 17 | desktops  | 
| 18 | external_hdds | 
| 26 | headphones | 
| 27 | headsets  | 
| 22 | keyboards  | 
| 16 | laptops  | 
| 24 | memory_cards | 
| 2 | mobile-phones | 
| 21 | mouses  | 
| 25 | pendrives  | 
| 19 | printers  | 
| 20 | routers  | 
| 23 | speakers  | 
| 28 | tablets  | 
+----+---------------+ 

공급 업체 테이블로가 ,

+-----+----------------------+ 
| id | name     | 
+-----+----------------------+ 
| 108 | abcShop    | 
| 109 | xyzShop    | 
| 45 | pqrShop    | 
| 89 | .     | 
| 63 | .     | 
| 64 | .     | 
+-----+----------------------+ 

ID를 표시하지 않지만 ID를 표시하고 이름을 표시하는 테이블을 사용하려면 어떻게해야합니까? 나는 이것을 어디에서 시작 해야할지 전혀 모른다. 도와주세요!

답변

3

그냥 다른 테이블에 가입이 한 공급 업체의 이름과 설명 이름이 고유로 작동하는 대신

SELECT GROUP_CONCAT(distinct(c.name)) AS s, 
     v.name AS v 
    FROM link_products_lists_vendors l 
    JOIN categories c on l.category_id = c.id 
    JOIN vendors v on l.vendor_id = v.id 
GROUP BY v.name; 

그 값을 선택합니다.

+0

v.name과 v.id 사이의 차이점은 무엇입니까? 이름이 고유하면 아무 것도 생각하지 않습니다. v.id ... 사용하는 방법 ... 어떤 식 으로든 작동했습니다 .. 감사합니다 .. – beck03076

+0

좋은 연습입니다. SELECT 부분에 집계 또는 GROUP BY의 일부만 포함 할 수 있습니다. –

관련 문제