首页 > 解决方案 > 如何将mysql上的其他行表GROUP_CONCAT到PHP中的关联数组中

问题描述

我会解释我的问题。希望你能帮助我,所以我会开始。

我的第一张桌子上有 4 个表格类别产品标题、 规格

类别有一个列行,主键是ID

   id | category_name
    -------------------
   34 | Guitar

在我的第二张表上, 产品在类别上有一个外键category_id,主 ID 是ID ( product_id )

id  | category_id | product_name
------------------------------
1   | 34          | yamaha f310

在我的第三个表 标题上,产品表上有一个外键product_id

id  |product_id | title_name
------------------------------
1   | 1         | Weight
2   | 1         | Height
3   | 1         | Warranty

在我的第 4 个表 规范中,产品表上有一个外键product_id

id  |product_id | specification_name
------------------------------
1   | 1         | 155 w
2   | 1         | 160 h
3   | 1         | 1 Year

所以我想将title_namespecification_name分组到associative_arrays中,比如title_name是一个KEYspecification_name

我试过这个查询,但我想让关联数组不是单独的列名

   SELECT 
         product.category_id , product.product_name , 
         category.category_name , 
         title.product_id,
         CONCAT("[", GROUP_CONCAT(DISTINCT title.title_name), "]") AS title,
         CONCAT("[", GROUP_CONCAT(DISTINCT specification.specification_name), "]") AS specification,
         specification.product_id
         FROM  product
         LEFT JOIN category ON product.category_id = category.id
         LEFT JOIN title ON product.id = title.product_id
         LEFT JOIN specification ON product.id = specification.product_id WHERE product.id = 1
         GROUP BY product.id
     
         $query->execute();
         $result = $query->fetchAll(PDO::FETCH_OBJ);

这个查询在 PHP 中的输出(我使用了 print_r)

Array
(
    [0] => stdClass Object
        (
            [product_name] => Yamaha F310
            [category_name] => Guitar
            [product_id] => 1
            [title] => [Warranty,height,Weight]
            [specification] => [1 year , 155 h ,160 w]
        )
)

但我想显示的输出是这样的,我编辑了这个来制作样本。

Array
(
    [0] => stdClass Object
        (
            [product_name] => Yamaha F310
            [category_name] => Guitar
            [product_id] => 1
            [title] => [Warranty => 1 year , height => 156 h , Weight=>160 w]
        )
)

标签: mysqlconcatenationgroup-concat

解决方案


推荐阅读