MySQL 查询联结 table returns 重复行
MySQL querying a junction table returns duplicate rows
我有以下 table 结构:
所以一个产品可能有多个 product_type
。
当我在 MySQL 中加入时,每个 product_type
都会得到重复的 product
记录。因此,例如,如果我有一个名为 Actifoam
的产品并且它在 products_types
table 中有 2 条记录,那么查询的结果将包括 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
仅当 SELECT
语句中所有列的 2 行具有完全相同的对应值时,才会 return 唯一行。在您的情况下,您需要 GROUP BY
和 GROUP_CONCAT
.
GROUP_CONCAT
将 return 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
我有以下 table 结构:
所以一个产品可能有多个 product_type
。
当我在 MySQL 中加入时,每个 product_type
都会得到重复的 product
记录。因此,例如,如果我有一个名为 Actifoam
的产品并且它在 products_types
table 中有 2 条记录,那么查询的结果将包括 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
仅当 SELECT
语句中所有列的 2 行具有完全相同的对应值时,才会 return 唯一行。在您的情况下,您需要 GROUP BY
和 GROUP_CONCAT
.
GROUP_CONCAT
将 return 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