MySQL, запрашивающий соединительную таблицу, возвращает повторяющиеся строки

У меня есть следующая структура таблицы:
введите описание изображения здесь

Таким образом, продукт может иметь несколько 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,

У кого-нибудь есть идеи, как мне этого добиться?

1

Решение

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
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]