Вывод данных из связанных таблиц php

Имеются 2 таблицы, категории и продукты.

введите сюда описание изображения

Написал запрос, аналог full outer join. Вот сам запрос:

SELECT C.name, P.name FROM categories C 
LEFT JOIN products P ON 
C.id = P.id_cat 
UNION ALL 
SELECT C.name, P.name FROM categories C 
RIGHT JOIN products P ON 
C.id = P.id_cat 
WHERE NOT EXISTS (SELECT 1 FROM categories C WHERE C.id = P.id_cat);

Но данные из таблицы категории дублируются. Вопрос в том, как в php избавится от дублирования этих значений чтобы получился массив такого вида:

['Холодильники' => ['Bosch kgn39', 'Atlant nf340']];


Ответы (1 шт):

Автор решения: ArchDemon
$query = [
    ['c_name' => 'Холодильники', 'p_name' => 'Bosch kgn39'],
    ['c_name' => 'Холодильники', 'p_name' => 'Atlant nf340'],
];

$result = [];
foreach ($query as $row) {
    $result[$row['c_name']][] = $row['p_name'];
}

print_r($result);

Вывод

Array
(
    [Холодильники] => Array
        (
            [0] => Bosch kgn39
            [1] => Atlant nf340
        )

)
→ Ссылка