Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
агрегаты с несколькими таблицами (chiffa) 12/08/2005 - 17:49:57



From: chiffa - 12/08/2005 - 17:49:57
Subject:агрегаты с несколькими таблицами
-----------------
есть 2 таблицы:
orders (ID, ORDER_DATE, DISCOUNT)
order_items (ID, ORDER_ID, QUANTITY)

необходимо: получить результат, сгруппированный по промежуткам ( неделям, дням, месяцам и проч.), в котором бы отображалось, сколько было заказов за этот промежуток, какое кол-во товара купили, и сумма дисконта.

SELECT COUNT(orders.ID) AS ORDERS_CNT, SUM(order_items.QUANTITY) AS ITEMS_CNT, SUM(orders.DISCOUNT) AS DISCOUNT
FROM orders INNER JOIN order_items ON orders.ID = order_items.ORDER_ID
GROUP BY WEEK(ORDER_DATE)
не работает, если по одному заказу несколько наименований

помогает DISTINCT:
SELECT COUNT(DISTINCT orders.ID) AS ORDERS_CNT, SUM(order_items.QUANTITY) AS ITEMS_CNT, SUM(orders.DISCOUNT) AS DISCOUNT
FROM orders INNER JOIN order_items ON orders.ID = order_items.ORDER_ID
GROUP BY WEEK(ORDER_DATE)
тогда кол-во заказов считает правильно, но с суммой дисконта не проходит (что нить типа SUM(DISTINCT orders.DISCOUNT) не работает

можно ли эту задачу решить одним запросом (без подзапросов, без CREATE VIEW и проч.) и если можно, то как? :)


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
23505



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |