Запрос на внутреннее соединение показывает 0 результатов

#opencart #opencart-3

Вопрос:

Я столкнулся со странной проблемой с запросом OpenCart (v: 3.0.3.7). Я пытаюсь извлечь данные таблицы product и product_descrition, используя Inner Join , но получаю 0 результатов. Этот запрос работает нормально, если я использую Left Join вместо Inner Join . Также запрос показывает результат для product_id, но нулевые значения в pd.name.

Примечание: Тот же запрос работает, когда я запускаю его непосредственно в phpMyAdmin

 SELECT p.product_id, pd.name FROM oc_product p Inner JOIN oc_product_description pd ON (p.product_id = pd.product_id) AND ( pd.name LIKE "%test%") AND p.manufacturer_id = "14" GROUP BY p.product_id ORDER BY p.product_id ASC  

Ответ №1:

Зачем вам это нужно INNER JOUN ? использовать LEFT JOIN … Вы можете попробовать это…

 SELECT DISTINCT * FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) AND pd.language_id = '" . (int)$this-gt;config-gt;get('config_language_id') . "' GROUP BY p.product_id ORDER BY p.product_id ASC  

Комментарии:

1. с помощью left join я получаю все записи из таблицы products, даже если имя продукта не существует в таблице product_description. Как я уже упоминал, левое соединение работает нормально. Я уверен, что эта проблема связана с opencart, так как тот же запрос отлично работает с phpmyadmin