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




MySQL.RU - Webboard



Вернуться
Помогите с запросом (Andrew) 24/05/2006 - 15:16:23
      Re: Помогите с запросом (Dinky) 24/05/2006 - 23:15:50
      Re: Помогите с запросом (Andrew) 24/05/2006 - 23:43:13
      Re: Помогите с запросом (Dinky) 25/05/2006 - 00:00:24
      Re: Помогите с запросом (Andrew) 25/05/2006 - 12:41:49
      Re: Помогите с запросом (Dinky) 25/05/2006 - 19:05:26

> Original message text:
> From: Andrew - 24/05/2006 - 15:16:23
> Subject:Помогите с запросом
> -----------------
> Есть две таблицы
> CREATE TABLE `Monthly` (
> `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
> `clientID` INT UNSIGNED NULL,
> `totalsum` INT NULL,
> `dateIn` DATETIME NULL,
> PRIMARY KEY (`id`)
> )
> и
> CREATE TABLE `Daily` (
> `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
> `clientID` INT UNSIGNED NULL,
> `totalsum` INT NULL,
> `dateIn` DATETIME NULL,
> PRIMARY KEY (`id`)
> )
>
> необходимо получить все суммы поклиентно из таблицы Monthly и все суммы поклиетно из таблицы Daily, НО и з таблицы Daily надо получать только те, у которых значение dateIn больше определенной даты, а именно больше последней даты из таблицы Monthly соответствующего клиента.
> Еще два условия: в таблице Monthly всегда есть минимум одна запись для клиента, в таблице Daily может не оказатся записей старше последней соответствующей клиенту записи из таблицы Monthly .
> Т.е. раз в месяц данные по клиенту суммируются и сваливаются в таблицу Monthly, а данные что были записаны 6 месяцев назад из таблицы Daily удаляются.
> И все это хочется получить одним запросом.
>
> Или подскажите другой способ агрегации большого количества платежей.
> Заранее благодарен.
>


From: Dinky - 24/05/2006 - 23:15:50
Subject:Помогите с запросом
-----------------
если я правильно понял, Вам нужно что-то типа объединения данных из этих таблиц? добирая из второй, чего не хватило из первой :)
т.е. если циклом по клиентам:
- SELECT clientID, MAX(dateIn) FROM Monthly GROUP BY 1;
- - SELECT * FROM Monthly WHERE clientID=$client
- - UNION
- - SELECT * FROM Daily WHERE clientID=$client AND dateIn>$max_dateIn;
что должно быть довольно быстро, если добавить индекс (clientID,dateIn) в обе таблицы ;) еще было бы неплохо обрезать dateIn до DATE ;)

--
Dmitry


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

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

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



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