Выполнение следующего запроса в моей базе данных, содержащей одежду, дает мне 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
любых идей относительно того, что я делаю неправильно? или как я могу решить эту проблему?
вы укажете 'группы by' пункта? если вы этого не сделаете, и используйте агрегированные функции, то mysql может группировать все, что захочет. –
Добавить 'GROUP BY category.name, color_variant.pcode, color_variant.price' перед вашим' ORDER BY' – Linger
@Linger благодарит, что решает эту проблему. – user3510209