Я довольно новичок в sql, поэтому я извиняюсь за это, если это вопрос, связанный с nooby, но я некоторое время ломаю голову и искал google без ответов, так что это последнее мое средство.Идентификация идентификатора группы в sql
Я пытаюсь создать самую продаваемую страницу на моем личном сайте, которая продает самый продаваемый товар за последние 30 дней.
жгутов базы данных есть 2 таблицы для этого: продукты и продукты заказы
продукты, как общий объем продаж всех времен, количество обзор всех времен и другая соответствующая информация, но заказы продукта имеют дату продажи продукта.
Таким образом, я вижу, что это единственное, что хорошо для продукта - это название, изображение и цена.
Итак, теперь я смотрю заказы на продукцию, и у этого есть идентификатор продукта и дата продажи.
Так что мой вопрос, как я группа идентификаторы,
, например, если у меня был:
productid = 42, datesold = 2013-11-08 21:11:10
productid = 11, datesold = 2013-11-08 21:09:10
productid = 42, datesold = 2013-11-08 21:06:10
productid = 2, datesold = 2013-11-07 21:11:10
productid = 11, datesold = 2013-11-06 21:11:10
Как бы я вернуть его, чтобы он в основном говорит
productid = 42 (sold 2 times)
productid = 11 (sold 2 times)
productid = 2 (sold 1 time)
Может
что-то как это сделать?
Кроме того, я думаю, что я слева присоединиться, который показывает его, но до сих пор не могу получить логику на группе подсчета
Вот слева от меня присоединиться к логике, пожалуйста, обнажить в виду, что это будет PDO, это просто показывая запрос, прежде чем я подготовлю его заявление;)
$ todaysdate = date ('Ymd h: i: s', strtotime («now - 30 days ago»));
SELECT * FROM product_order LEFT JOIN product ON product_order.productId=product.id
WHERE product_order.modifiedDate >= $todaysdate AND product_order.status = 2
ORDER BY product_order.modifiedDate DESC;
Заранее спасибо за любую помощь дали :)
EDIT ::::::::::::::::::::::::::::: :::::::
Ive изменил его, но по какой-то причине его рвало главную ошибку:
SQLSTATE [42000]: ошибка синтаксиса или нарушение прав доступа: 1064 у вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '15: 14: 13 AND product_order.status = 2 AND product.status = 1 GROUP BY product_o 'по строке 4 Трассировка стека:
Вот SQL-запрос:
$todaysdate = date('Y-m-d G:i:s', strtotime("now - 30 days ago"));
SELECT product.id, product.name, product.picture, product.mainImage, product_option_detail.price, COUNT(product_order.productId) AS NumberOfOrders FROM product_order
RIGHT JOIN product ON product_order.productId=product.id
INNER JOIN product_option_detail ON product_order.productId=product_option_detail.productId
WHERE product_order.modifiedDate >= {$createddate} AND product_order.status = 2 AND product.status = 1
GROUP BY product_order.productId
ORDER BY NumberOfOrders DESC;
Какие СУБД вы используете? Oracle? Postgres? –
@a_horse_with_no_name его MySQL – Robert
Пожалуйста, поймите, что ваше обновление представляет собой совершенно иную проблему из того, что вы задали на начальном этапе. Вы можете использовать статическое значение в качестве аргумента запроса, чтобы убедиться, что ваш запрос работает правильно. Если вы подтвердили это, пожалуйста, отметьте правильный ответ как принятый и опубликуйте * новый * вопрос. –