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




MySQL.RU - Webboard



Вернуться
Помогите с запросом! Есть БД покупок, надо вы (Dmitry) 22/07/2004 - 06:15:11
      Re: Хелп!! (Dmitry) 22/07/2004 - 12:24:59
      Re: Хелп!! (Alec) 22/07/2004 - 13:23:31
      Re: Уточняю. Например так... (Dmitry) 22/07/2004 - 13:30:24
      Re: Уточняю. Например так... (Alec) 22/07/2004 - 14:29:03
      Re: Уточняю. Например так... (Dmitry) 22/07/2004 - 18:43:46
      Re: Уточняю. Например так... (Dinky) 22/07/2004 - 18:58:20
      Re: А ларчик просто открываля (Валентин) 23/07/2004 - 15:20:52

> Original message text:
> From: Dmitry - 22/07/2004 - 06:15:11
> Subject:Помогите с запросом! Есть БД покупок, надо вы
> -----------------
> Помогите с запросом! Есть БД покупок, надо вывести отчет по периодам. Делаю группировку по нужному периоду и получаю нужные записи. Но в некоторые периоды нет покупок, следовательно эти периоды пропадают :( Как сделать запрос, чтобы в нем были все периоды???
>
> Вот примерно запрос:
>
> SELECT
>
> $period_expression AS period,
> SUM( shop_ordered_item.quantity ) AS purchased_items,
>
> FROM shop_order, shop_ordered_item
> WHERE
> shop_order.id = shop_ordered_item.order_id
> AND shop_order.order_date > '$start_date' AND shop_order.order_date < '$end_date'
>
> GROUP BY period
>
> Наверняка кто-то это писал...
>


From: Валентин - 23/07/2004 - 15:20:52
Subject:А ларчик просто открываля
-----------------
Для отчетов, где нельзя укзать например нужный период можно делать очень просто:
1) Создать табличку дат
CREATE TABLE `dates` (
`DocmDate` date NOT NULL default '0000-00-00',
PRIMARY KEY (`DocmDate`)
) TYPE=MyISAM
Нагенерировать туда дан лет на 5.
2) После этого можно использовать даты как опорную шкалу для левого объединения, группируя. Но следует учеть такую деталь:
Скорость будет маленькая, если не поставить в объединение еще одно ключа, например, вот запро вычисления задолженностей по некоторым поставщикам:

SELECT d.DocmDate
,mt.FirmCode
,IF(-sum(dl.DocmSumm/100) is NULL,0,-sum(dl.DocmSumm/100)) as Duty
from dates d, margin_transitfirms mt
left join gb_dutyline dl on
dl.DocmDate<=d.DocmDate
and dl.FirmCode=mt.FirmCode
where d.Docmdate between '2004.07.01' and '2004.07.10'
and mt.Kind=0
group by d.DocmDate
,mt.FirmCode


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

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

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



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