2014-09-11 5 views
2

Выполнение следующего запроса в моей базе данных, содержащей одежду, дает мне result, где у меня несколько строк одного и того же продукта, где единственная разница - это столбец размера.Group_concat, соединяющий столбцы в строке, если другие столбцы равны

SQL QUERY:

SELECT 
categories.name AS "category", 
color_variant.pcode AS "code", 
stock.size AS "size", 
color_variant.price AS "price" 

FROM 
categories, product, color_variant, stock 

WHERE 
categories.id = product.category_id AND 
product.id = color_variant.product_id AND 
color_variant.id = stock.color_variant_id 

ORDER BY 
categories.id 

Я хотел бы присоединиться строки размер каждого продукта, так что я получить что-то вроде

category code    sizes    price 
    jean 1018918053 24,25,26,27,28,29,30,31,32 119.99 
    jean 1018916407 26       159.99 
    jean 1018917373 31       159.99 
    jean 1018917354 25       109.99 
    jean 1018919115 24,25,26,27,28,29,30,31,32 129.99 
    jean 1018913449 24,25,26,27     109.99 

Я попытался GROUP_CONCAT, заменив stock.size AS "size", с

GROUP_CONCAT(DISTINCT stock.size ORDER BY stock.size SEPARATOR ', ') AS "sizes",

но это дает мне В результате одна линии, где каждый размер строка соединяется, даже если я использую его в качестве подзапроса,

category code     sizes      price 
jean 1018918053 1,105,11-12,115,2-3,23,24,25,26,27,28,2... 119.99 

любых идей относительно того, что я делаю неправильно? или как я могу решить эту проблему?

+0

вы укажете 'группы by' пункта? если вы этого не сделаете, и используйте агрегированные функции, то mysql может группировать все, что захочет. –

+0

Добавить 'GROUP BY category.name, color_variant.pcode, color_variant.price' перед вашим' ORDER BY' – Linger

+0

@Linger благодарит, что решает эту проблему. – user3510209

ответ

1

Добавить

GROUP BY categories.name, color_variant.pcode, color_variant.price 

непосредственно перед ORDER BY