Выбрать массив в строке? - PullRequest
0 голосов
/ 05 марта 2010

У меня есть 2 таблицы:

1. products
- product_id
- title
2. product_categories
- product_id
- category_id

Каждый товар может иметь более одной категории. Я храню эту информацию в таблице product_categories. Я хочу иметь возможность ВЫБРАТЬ все category_ids, когда я выбираю продукт в 1 запрос. Как я могу это сделать? Пока у меня есть следующее, но он выберет только 1 идентификатор категории:

SELECT
  p.*,
  (SELECT
     category_id
   FROM 
     product_categories
   WHERE product_id = p.product_id) as category_ids
FROM
   products AS p

Ответы [ 2 ]

0 голосов
/ 05 марта 2010

Вы можете использовать левое соединение, Group By и GROUP_CONCAT

Как использовать GROUP BY для объединения строк в MySQL?

SELECT products.*, GROUP_CONCAT(category_id SEPARATOR ' ')
FROM products LEFT JOIN product_categories
                ON product_categories.product_id = products.product_id
GROUP BY product_id;
0 голосов
/ 05 марта 2010

выберите продукты. *, Product_categories from оставлено внешнее соединение product_categories на product_categories.product_id = products.product_id

...