使用GROUP_CONCAT
我有一个叫做“股票”表一个复杂的SQL查询:使用GROUP_CONCAT
stock_id | prod_id | size | color | shop_id | qty 1 | 4 | L | Red | 1 | 3 2 | 4 | XL | Blue | 2 | 1 3 | 4 | L | Red | 3 | 2 4 | 2 | XXL | White | 1 | 7 5 | 4 | L | Red | 4 | 1
一些认。
我有一个产品表和一个商店表。
我想作为结果什么是类似的东西:
prod_id | prod_name | shop_name | color_size_qty 4 | T-Shirt | Shop 1 | Red,L,(3) 2 | T-Shirt | Shop 1 | White,XXL,(7) 4 | T-Shirt | Shop 2 | Blue,XL,(1)
我不知道你是否能理解我。我得到的最接近的东西就像
prod id | prod_name | Colors | sizes |
4 | T-Shirt |Red,Red,Red,Blue,White | L,L,L,XL,XL
甚至没有如你所见。希望您能够帮助我。
简单CONCAT()
可能是你所需要的,而不是一个GROUP_CONCAT()
:
SELECT
prod_id, prod_name, shop_name,
CONCAT(color, ',', size, ', (', qty, ')') AS color_size_qty
FROM
stock
JOIN products ON stock.prod_id=products.id
JOIN shops ON stock.shop_id=shops.id
ORDER BY
prod_name ASC, shop_name ASC
看起来不错,虽然它是你得到'列'prod_id'在字段列表是不明确的'。只需要消除歧义,它就像一个魅力 - [工作示例](http://sqlfiddle.com/#!2/49e1f/2)。 – DaveRandom 2012-07-13 19:58:47
@PauloBarros对不起,你可以得到类似* what *的结果。 – DaveRandom 2012-07-16 11:34:27
@DaveRandom谢谢你的男人。非常。我并不是想打扰你太多,但是我怎样才能改变你的查询,这样我就可以得到如下结果:----------------------- ---------------------------------------- prod_name | shop_name total_prods_per_shop [] | COlor_size_qty(全部在一行中)如下所示:---------------------------------------- ----- T恤| shop1合计(9)|黑色,XL(3)/红色,L(2)/白色,S(4)------ T恤| shop2合计(3)|蓝色,XL(1)/黄色,L(2)....等等。再次感谢你! – 2012-07-16 11:43:01
你能告诉我们你有这么远的查询? – Bort 2012-07-13 19:44:44
选择P档。*, GROUP_CONCAT(DISTINCT e.estoque_prod_cor ORDER BY e.estoque_prod_cor)为核, GROUP_CONCAT(DISTINCT e.estoque_prod_tam ORDER BY e.estoque_prod_tam)作为tamanhos 从produtos P,estoqueÈ 其中p。 produto_id = e.produtos_produto_id GROUP BY p.produto_nome – 2012-07-16 11:15:27