2013-07-14 1 views
0

일부 용어가 잘못된 경우에는 용서해주세요. 여전히 고급 mySql 쿼리를 배우려고합니다. 전자 상거래 플랫폼에서 데이터를 내보내려고하고 있는데 필요한 데이터 중 일부는 조회 테이블에 있습니다. 문제는 하나 이상의 값을 가질 수있는 하나의 조회 테이블이며 데이터를 가져와야하는 시스템입니다. 해당 열에 대해 특정 형식이 필요합니다.사용자 정의 형식의 mysql 쿼리와 여러 값을 하나의 열로 배열합니다.

도움이된다면 zen cart를 사용하고 아래는 쿼리입니다.

Select zp.products_id as id, zpd.products_name as name, products_price_w as cost, products_price as price, zp.products_date_added as date_created, zp.products_image as thumbnail 
FROM `zen_products` as zp 
LEFT JOIN `zen_products_description` as zpd ON zp.products_id = zpd.products_id 
WHERE zp.products_status = 1 
ORDER BY zp.products_id ASC; 

내가 필요한 것은 각 제품에 속한 범주 나에게 알려주는 룩업 테이블, 나는 또 다른 가입이 될 것 알고 있지만, 1 개 이상의 카테고리가 제품에 속하는 그래서 만약 내가 필요 프로그래머입니다 같은 열에 넣고 @ 기호로 연결하십시오. 카테고리의 ID가 아니라 경로이므로 경로를 얻기 위해 다른 테이블의 카테고리 ID를 찾아야합니다.

그래서 예를 들어 "카테고리 1/하위 범주 @의 구분 2".. 대한 의견

감사합니다.

편집 : 난 아직도 내가 원하는 두 배의 결과를 얻고으로 결과가 합병 얻을 필요가 있지만, 내가이에의 각 범주에 대한 기록을 볼 수 .. 당신은 무엇

Select zp.products_id as id, zpd.products_name as name, zcd.categories_name as categories, products_price_w as cost, products_price as price, zp.products_date_added as date_created, zp.products_image as thumbnail 
FROM `zen_products` as zp 
INNER JOIN `zen_products_description` as zpd ON zp.products_id = zpd.products_id 
INNER JOIN `zen_products_to_categories`as zptc ON zp.products_id = zptc.products_id 
INNER JOIN `zen_categories_description` as zcd on zptc.categories_id = zcd.categories_id 
WHERE zp.products_status = 1 
ORDER BY zp.products_id ASC; 

답변

0

찾고있는 사람은 group_concat()입니다. 나는 그것이 다음과 같을 것이라고 생각한다 :

Select zp.products_id as id, zpd.products_name as name, 
     group_concat(zcd.categories_name separator '@') as categories, 
     products_price_w as cost, products_price as price, 
     zp.products_date_added as date_created, zp.products_image as thumbnail 
FROM `zen_products` as zp 
INNER JOIN `zen_products_description` as zpd ON zp.products_id = zpd.products_id 
INNER JOIN `zen_products_to_categories`as zptc ON zp.products_id = zptc.products_id 
INNER JOIN `zen_categories_description` as zcd on zptc.categories_id = zcd.categories_id 
WHERE zp.products_status = 1 
group by zp.products_id 
ORDER BY zp.products_id ASC; 
+0

그것은 트릭을하는 것처럼 보인다! – nerdology