COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

Нужна помощь по модели и MySql


Seofisher

Recommended Posts

Нужна помощь, не хватает знаний.
Подскажите как правильно выполнить запрос к БД.
Есть вот что:
 

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, ............................ тут еще много схожего

 

Ссылка на комментарий
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу