gpt4 book ai didi

php - 查询联结表的 MySQL 返回重复行

转载 作者:行者123 更新时间:2023-11-29 06:00:08 25 4
gpt4 key购买 nike

我有以下表结构: enter image description here

所以一个产品可能有多个product_type的。

当我在 MySQL 中加入时,我会重复 product每个 product_type 的记录.例如,如果我有一个名为 Actifoam 的产品它在 products_types 中有 2 条记录table 然后查询的结果将包括 Actifoam两次(每次都有不同的 product_type

这是我的查询:

SELECT DISTINCT product.*, product_type.name as product_type_name
FROM products_types
JOIN product_type ON product_type.id = products_types.product_type_id
JOIN product ON product.id = products_types.product_id

查询结果如下:

[
0 => [
'id' => 'recccAQHxsb4OEsX6'
'name' => 'Actifoam'
'product_type_name' => 'Silver Dressing'
]
1 => [
'id' => 'recccAQHxsb4OEsX6'
'name' => 'Actifoam'
'product_type_name' => 'Foam'
]
]

我不想要 product记录像这样出现多次,如果有多个 product_types,我希望所有内容都出现在一行中.

有人知道我该如何实现吗?

最佳答案

DISTINCT 仅当 2 行对于 SELECT 语句中的所有列具有完全相同的对应值时,才会返回唯一行。在您的情况下,您需要 GROUP BYGROUP_CONCAT

GROUP_CONCAT 将返回以逗号分隔的 product_type_name

SELECT product.*, GROUP_CONCAT(product_type.name) as product_type_name
FROM products_types
JOIN product_type ON product_type.id = products_types.product_type_id
JOIN product ON product.id = products_types.product_id
GROUP BY product.id

关于php - 查询联结表的 MySQL 返回重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45731114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com