@apptimeru

Объединение строк SQL (одна ко множеству)?

Привет знатоки, подскажите пожалуйста не смог найти информацию как сделать подобный запрос.

Есть одна таблица скажем с товарами, одна с категориями и 3 таблица объединяющая, т.е. в ней указывается ID товара и ID соответсвующей категории.

Допустим товар может принадлежать сразу 2ум категориям, соответственно в 3 таблице у нас будет 2 записи.

Так вот как вывести все товары и рядом их категории если у каждого товара может быть несколько категорий? Т.е. получается что объединить при запросе надо 1 строку из одной таблица с 2 или более другой таблицы?

Я пробовал таким образом

SELECT base. * , meta.value
FROM  `base` 
LEFT OUTER JOIN meta ON meta.id = base.id


При таком запросе он просто дублирует строку с товаром и каждой присваивает одну категорию, в итоге имеем массу дублей товаров.
  • Вопрос задан
  • 486 просмотров
Решения вопроса 1
В условии же три таблицы.
SELECT g.id, g.name, GROUP_CONCAT(m.name)
FROM goods AS g
    LEFT JOIN goods_meta AS gm ON (goods.id = gm.goods_id)
    LEFT JOIN meta AS m ON (m.id = gm.meta_id)
GROUP BY g.id
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ivanq
@Ivanq
Знаю php, js, html, css
На сколько я помню, должно работать

SELECT base. * , meta.value
FROM  `base`, `meta`
WHERE meta.id = base.id
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы