Привет, я изо всех сил пытаюсь написать конкретный запрос на присоединение к MySQL.
У меня есть таблица, содержащая данные о продуктах, каждый продукт может принадлежать к нескольким категориям. Это отношение m: m выполняется с помощью таблицы ссылок.
Для этого конкретного запроса я хочу получить все продукты, принадлежащие данной категории, но с каждой записью продукта я также хочу вернуть другие категории, к которым принадлежит продукт.
В идеале я хотел бы добиться этого с помощью внутреннего соединения в таблице категорий, а не выполнять дополнительный запрос для каждой записи продукта, что было бы довольно неэффективно.
Моя упрощенная схема разработана примерно следующим образом:
таблица продуктов:
product_id, name, title, description, is_active, date_added, publish_date, etc....
таблица категорий:
category_id, name, title, description, etc...
таблица product_category:
product_id, category_id
Я написал следующий запрос, который позволяет мне получить все продукты, принадлежащие указанному category_id. Однако я действительно изо всех сил пытаюсь понять, как получить другие категории, к которым принадлежит продукт.
SELECT p.product_id, p.name, p.title, p.description
FROM prod_products AS p
LEFT JOIN prod_product_category AS pc
ON pc.product_id = p.product_id
WHERE pc.category_id = $category_id
AND UNIX_TIMESTAMP(p.publish_date) < UNIX_TIMESTAMP()
AND p.is_active = 1
ORDER BY p.name ASC
Я был бы счастлив просто получить идентификатор категории, присвоенный каждой возвращаемой строке продукта, так как все данные категории будут храниться в объекте, а код моего приложения позаботится обо всем остальном.
Большое спасибо,
Ричард