У меня есть следующая структура таблицы:
Таким образом, продукт может иметь несколько product_type
«S.
Когда я делаю свой Join в MySQL, я получаю повторение product
записи для каждого product_type
, Так, например, если у меня есть продукт под названием Actifoam
и у него есть 2 записи в products_types
таблица, то результат запроса будет включать 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 BY
а также GROUP_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
Других решений пока нет …