Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
Извиняюсь за назойливость! Может кто подскажет как грамотно перестроить таблицу? Есть таблица с полем, в котором храниться дата (ключевое). Date |10/10/2001| |11/10/2001| |12/10/2001| |13/10/2001| .......... Мне надо перестроить таблицу (может промежуточную создать) таким образом, чтобы было две колонки: в одной дата, а в другой - ближайшая последующая к ней дата, т.е. Date1______Date2 |10/10/2001| 11/10/2001 |11/10/2001| 12/10/2001 |12/10/2001| 13/10/2001 |13/10/2001| null .......... Я сделал через WHERE v1.Date>v2.Date где v1,v2-одна и та же таблица с последующей группировкой по дате и вычислением MIN(Date) , но на 1000 записей в промежуточном запросе порождается свыше 200.000 записей. Ведь, в принципе "проще" это сделать "на бумаге": взять таблицу, ее копию и копию сдвинуть вверх на одну строку, тогда каждой дате левой таблицы будет соответствовать дата правой таблицы, где дата правой таблицы является следующей ближайшей датой для даты левой таблицы. Извините за запутанность, но если кто разобрался в моих ломанных объяснениях и у кого есть соображения по этому поводу, прошу откликнуться. Мне важен принцип, т.к. запрос я уже сделал (но он мне не нравится, не нравится сам механизм, которым я пользуюсь для выполнения, казалось бы пустякового преобразования) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 09:13 |
|
||
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
select t1.date as date1, t2.date as date2 from dtable t1 left outer join dtable t2 on datediff(d, t1.date, t2.date)=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 09:38 |
|
||
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
2 Pandre Благодарю! P.S. Чувствовал, что истина где-то в указанном Вами направлении.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 09:42 |
|
||
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
Господа, а если разница между датами не обязательно 1 день, а произвольная? Как указать , что по min(разница) нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 10:05 |
|
||
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
select t1.date as date1, t2.date as date2 from dtable t1 left outer join dtable t2 on t2.date=(select min(t3.date) from dtable t3 where t1.date<t3.date) order by t1.date ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 10:18 |
|
||
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
2 Pandre Спасибо!!! :0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 10:35 |
|
||
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
Так быстрее select t1.date as date1, min(t2.date) as date2 from dtable t1 left outer join dtable t2 on t1.date<t2.date group by t1.date ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 10:40 |
|
||
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
2 Pandre. Можно полюбопытствывать, какой у Вас стаж работы с SQL? Просто хочу прикинуть, сколько мне еще пахать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 10:46 |
|
||
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
2 Timur Я сделал через WHERE v1.Date>v2.Date где v1,v2-одна и та же таблица с последующей группировкой по дате и вычислением MIN(Date) , но на 1000 записей А что Вы под этим имели ввиду? Разве это не тоже что и Pandre написал? select t1.date as date1, min(t2.date) as date2 from dtable t1 left outer join dtable t2 on t1.date<t2.date group by t1.date Так что совсем немного осталось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 11:32 |
|
||
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
2 SergSuper. Вы правы! Ваша наблюдательность меня окрылила (т.е. запрос я правильно написал), а вот собственная "близорукость" огорчила. Учиться, учиться и,еще раз, учиться как завещал великий Ленин! Ура!!! Спасибо. P.S. Как Вы мордочку смеющуюся ":0) вставили в текст?!!! 2 Pandre Признателен за помощь, Ваш ответ зажег "лампочку" в моих мозгах. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 12:26 |
|
||
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
2 Timur А вот до мордочек Вам еще пахать и пахать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 13:52 |
|
||
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 14:35 |
|
||
|
Как грамотно "перестроить" таблицу
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2001, 14:50 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3526&tid=1824788]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 324ms |

| 0 / 0 |
