使用group_concat的复杂SQL查询

时间:2012-07-13 19:39:52

标签: php mysql sql

我有一张名为'stock'的表:

    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  

你甚至没有看到。希望你能帮帮我。

1 个答案:

答案 0 :(得分:5)

您可能只需要一个简单的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