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




MySQL.RU - Webboard



Вернуться
Нетривиальная задачка. для продвинутых. (tempo) 14/07/2006 - 12:23:29
      Re: Нетривиальная задачка. для продвинутых. (bac) 14/07/2006 - 13:13:57
      Re: Нетривиальная задачка. для продвинутых. (tempo) 14/07/2006 - 13:43:00
      Re: Нетривиальная задачка. для продвинутых. (Leon) 11/09/2006 - 17:01:37
      Re: Нетривиальная задачка. для продвинутых. (Leon) 11/09/2006 - 17:04:03

> Original message text:
> From: tempo - 14/07/2006 - 12:23:29
> Subject:Нетривиальная задачка. для продвинутых.
> -----------------
> Не знаю, возможно ли вообще так сделать.
>
> Допустим, есть таблица с 3-мя полями (id, date и item).
> Данные в ней такие:
>
> 1 2002-07-01 item-1
> 2 2002-07-02 item-2
> 3 2002-07-04 item-3
> 4 2002-07-05 item-4
> 5 2002-07-06 item-5
> 6 2002-07-09 item-6
> 7 2002-07-10 item-7
> 8 2002-07-11 item-8
>
> Есть ли способ выбрать данные с заполнением отсутствующих дат? т.е. чтобы получилось:
>
> 1 2002-07-01 item-1
> 2 2002-07-02 item-1
> 3 2002-07-03
> 4 2002-07-04 item-1
> 5 2002-07-05 item-1
> 6 2002-07-06 item-1
> 7 2002-07-07
> 8 2002-07-08
> 9 2002-07-09 item-1
> 10 2002-07-10 item-1
> 11 2002-07-11 item-1
>
> Сомневаюсь вот. Поправьте, если не прав.
>


From: Leon - 11/09/2006 - 17:01:37
Subject:Нетривиальная задачка. для продвинутых.
-----------------
Если еще актуально
>1) там предлагается создавать табличку дополнительную. в моем случае, это невозможно.
Ну раз нельзя но очень надо то сделаем табличку объединением
а дальше два варианта
Варант 1 - если в таблице Items есть лишние данные
(Пример на тех данных, что приведены выше)
SELECT ('2002-07-01' + INTERVAL nnDay DAY) as Date, Item
FROM
(SELECT (td100.d *100 + td10.d*10+td0.d) as nnDay
FROM
(SELECT 0 as d UNION ALL SELECT 1 as d UNION ALL SELECT 2 as d UNION ALL SELECT 3 as d ) as td100,
(SELECT 0 as d UNION ALL SELECT 1 as d UNION ALL SELECT 2 as d UNION ALL SELECT 3 as d UNION ALL SELECT 4 as d UNION ALL SELECT 5 as d UNION ALL SELECT 6 as d UNION ALL SELECT 7 as d UNION ALL SELECT 8 as d UNION ALL SELECT 9 as d ) as td10,
(SELECT 0 as d UNION ALL SELECT 1 as d UNION ALL SELECT 2 as d UNION ALL SELECT 3 as d UNION ALL SELECT 4 as d UNION ALL SELECT 5 as d UNION ALL SELECT 6 as d UNION ALL SELECT 7 as d UNION ALL SELECT 8 as d UNION ALL SELECT 9 as d ) as td0
WHERE (td100.d *100 + td10.d*10+td0.d)<=(DateDiff('2002-07-11','2002-07-01') )
ORDER BY nnDay
) as D LEFT JOIN ( SELECT * FROM Items WHERE Date BETWEEN '2002-07-01' AND '2002-07-11')as I
ON ('2002-07-01' + INTERVAL nnDay DAY)=I.Date


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

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

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



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