Я хотел бы узнать, как отобразить заказы, размещенные в определенный день.
Например:
Я хотел бы отобразить заказы, размещенные сегодня.
Моя база данных MySQL содержит следующие таблицы:
В разделе заказы у меня есть следующие поля:
В разделе orders_statuses у меня есть следующие поля:
Каждый раз, когда размещается новый заказ, он получает по умолчанию status_id = 3 (что означает status_name = Order is Pending).
Таким образом, если сегодня было размещено 3 ордера, все они будут иметь одинаковый status_id, равный 3 (Order is Pending).
Итак, какой запрос я должен использовать для расчета заказов, размещенных сегодня, на этой неделе и в этом месяце?
Вот запрос, в котором я выбираю все заказы, помещенные в корзину:
SELECT order_id, order_placed_date FROM orders
Результат вышеприведенного запроса:
Идентификатор заказа ---- Дата размещения заказа. 1 --- 12/30/2008 12:06:24 AM 2 --- 2/3/2009 1:57:17 УТРА 3 --- 2/3/2009 1:58:27 УТРА 4 --- 5/3/2009 1:58:48 УТРА 5 --- 6/3/2009 2:00:31 УТРА 6 --- 7/3/2009 2:01:47 УТРА 7 --- 7/3/2009 2:02:31 УТРА 9 --- 7/4/2009 2:21:18 ВЕЧЕРА 10 --- 7/4/2009 2:21:36 PM 11 --- 7/4/2009 2:22:18 PM 12 --- 7/4/2009 2:23:29 PM 13 --- 7/4/2009 2:24:24 PM
Я хотел бы получить общее количество заказов, сделанных сегодня.
Поскольку сегодняшняя дата - 4 июля 2009 года, из приведенного выше результата видно, что 4 июля было размещено 5 заказов.
Какой запрос я должен использовать, чтобы получить общее количество заказов за определенный день, в сегодняшнем случае - 5.
UPDATE : Решено
Для получения ответа я использовал оба запроса - Adam's и colithium:
Вот что я использовал:
SELECT COUNT(order_placed_date)
FROM va_orders
WHERE DATE(order_placed_date) = curdate();
Сработало отлично :)
Предположим, что у вас есть внешний ключ в ORDERS_STATUSES
под названием ORDERS_ID
:
select o.orders_id
, o.orders_placed_date
from orders o
inner join orders_statuses os
os.orders_id = o.orders_id
and
os.status_id = 3
where date(o.orders_placed_date) = curdate()
Чтобы получить количество заказов в определенный день:
SELECT COUNT(*) FROM orders WHERE order_placed_date = @DayYouWant
Чтобы получить заказы за сегодня/эту неделю/этот месяц:
SELECT order_id, order_placed_date FROM orders WHERE order_placed_date BETWEEN @StartDate AND @EndDate
Если вам нужны только заказы со статусом 3, вам нужно будет соединиться с таблицей статусов и добавить этот критерий в предложение WHERE.