Нужна помощь, не хватает знаний.
Подскажите как правильно выполнить запрос к БД.
Есть вот что:
public function getProducts($data = array()) {
$sql =
"SELECT p.product_id,
(SELECT AVG(rating)
AS total FROM " . DB_PREFIX . "review r1
WHERE r1.product_id = p.product_id
AND r1.status = '1'
GROUP BY r1.product_id)
AS rating,
(SELECT price FROM " . DB_PREFIX . "product_discount pd2
WHERE pd2.product_id = p.product_id
AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "'
AND pd2.quantity = '1'
AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW())
AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW()))
ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1)
AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps
WHERE ps.product_id = p.product_id
AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "'
AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW())
AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW()))
ORDER BY ps.priority ASC, ps.price ASC LIMIT 1)
AS special";
Мне нужно добавить условие, отбирать те ID у которых isbn = 1
Такой запрос, дает нужный мне результат:
SELECT product_id FROM " . DB_PREFIX . "product WHERE isbn = '1'
Я же решил заменить первую строчку существующего кода на свой:
SELECT p.product_id, заменил на SELECT product_id FROM " . DB_PREFIX . "product WHERE isbn = '1',
И у меня ничего хорошего с этого не вышло. Понимаю что знаний не хватает, прошу помощи.
Вот такая ошибка выходит в результате замены строчки кода:
Notice: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.' at line 1
Error No: 1064
SELECT product_id FROM oc_product WHERE isbn = '1', (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, ............................ тут еще много схожего