Присоединяйся ко многим ко многим столам с другими - PullRequest
0 голосов
/ 26 июня 2019

У меня есть запрос, который объединяет 3 таблицы по идентификатору продукта, вот код.

SELECT oc_product.product_id, oc_product.image, oc_product.price, oc_product_description.name
FROM oc_product
JOIN oc_product_description
ON oc_product.product_id = oc_product_description.product_id;

Я получил product_id, изображение, цену и описание, но мне нужно взять и название категории, продукт имеет много-много связей с таблицей категорий. Похоже на это.

[oc_product_to_category * сводная таблица] [1]

И мне нужно взять название категории из этой таблицы.

[oc_category_description] [2]

[1] https://i.stack.imgur.com/5WAKd.png

[2] https://i.stack.imgur.com/YNcLn.png

Большое спасибо, я очень застрял с этим!

PS: я хочу взять название категории и присоединиться к моему коду с другими столбцами.

1 Ответ

0 голосов
/ 26 июня 2019

Вам нужно добавить еще 2 JOIN s к вашему запросу:

  • Присоединяйтесь oc_productoc_product_to_category, чтобы связать товары с их категориями
  • Тогда присоединяйтесь oc_product_to_categoryoc_category_description, чтобы захватить Детали категории

Таким образом, вы можете включить в свой запрос те поля, которые вам нужны из любой объединенной таблицы.

SELECT p.product_id, p.image, p.price, d.name, c.name, c.description
FROM oc_product AS p
JOIN oc_product_description AS d
    ON p.product_id = d.product_id
JOIN oc_product_to_category AS pc
    ON pc.product_id = p.product_id
JOIN oc_category_description AS c
    ON c.category_id = pc.category_id;

Как вы заметили, использование псевдонимов для фактических имен таблиц помогает немного упростить как сегменты SELECT, так и JOIN - ON запроса.

Я создал быстрый пример здесь , чтобы показать результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...