Выбрать товары с урлами из базы OpenCart

Запрос SQL для выборки всех товаров и их урлов:

SELECT pd.product_id, pd.language_id, pd.name, su.keyword
FROM oc_product_description pd LEFT JOIN oc_seo_url su on(CONCAT('product_id=', pd.product_id) = su.query)
ORDER BY `pd`.`language_id` ASC

В запросе используется связка таблиц через JOIN, и самое интересное в условии связки on.

Поскольку в таблице seo_url нет прямого указания на ID товара (product_id), в этой таблице находятся все урлы, и для товаров и для категорий и для информационных страниц. Чтоб понять какой урл к чему относится, используется поле запроса query, в котором указано:

  • для товаров product_id=____
  • для категорий category_id=____
  • для инфоблоков information_id=___
  • для брендов manufacturer_id=___

По этому в условие нельзя просто поставить «su.product_id = pd.product_id»

Оцените статью
Добавить комментарий