Как сортировать по дату?

Привет всем!
Вот есть SQL запрос
$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";

как тут сортировать по дату продукта ? То есть новые самые первые а старые конце?
Спасибо
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
@opencart-russia
Русское сообщество OpenCart
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gromdron
@gromdron
Работаю с Bitrix24
Код в читаемом виде
$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";


И встает вопрос: а что такое дата продукта?
Предположим, у вас в таблице p (или как она у вас, главное что p - таблица или alias), есть поле "created_at", которая и хранит ту самую "дату продукта"
Тогда после запроса можно добавить:

ORDER BY p.created_at DESC

И тогда он будет выдавать те же данные, но сортированные по убыванию "даты продукта"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы