![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - украшаем запрос MS SQL |
|
|
Разное - украшаем запрос MS SQL
|
![]() Ветеран Сообщения: 1180 |
1. можно ли как-то запустить Query Analyzer (2000) с ярлычка, чтоб он не заново запускался, а создал окошко в уже открытом аналайзере? А то задолбал плодиться, я забываю смотреть, есть он в живых или нет.
2. есть уже заполненная табличка: нужно оставить в ней записи, имеющие хотя бы одно пересечение с другими при одинаковой groupId. Остальные удалить. Я сделал, но мне кажтся чёто как-то некрасиво и медленно, через delete where not exists(...). Сами понимаете, некрасивые самолёты не летают. Есть варианты как причесать запрос? |
|
Отправлено: 15:18, 15-09-2008 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать для MS SQL есть свой раздел форума
2. сразу сделать правильную (необходимую) выборку. Временные таблицы - очень ресурсоёмкое решение, так ли они нужны в данном случае? |
Отправлено: 16:31, 15-09-2008 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Цитата:
Может я неправильно понимаю как оно работает, обрисую задачу: Есть табличка с оплаченными повременными услугами, примерно миллион-два записей (с 2004 года). Из них нужно выбрать такие записи за последние 4 недели, которые бы оплачивали одну и ту же услугу в одно и то же время, то есть выяснить какие есть перекрытия оплат. Табличка имеет много всяких полей, я выбрал только нужные 4 поля за последние недели (около 1000 строчек), а потом искал пересечения А можно ли как-то создать временный view? чтобы съэкономить и упонятнить код |
|
Отправлено: 06:46, 16-09-2008 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать pva
1. Запускать скриптом, который проверяет наличие QA и либо запускает, либо активирует окно и отправляет комбинацию <Ctrl+N> |
Отправлено: 13:12, 16-09-2008 | #4 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 14:58, 16-09-2008 | #5 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать дело в том, что граница оказания услуг может быть и не кратна дню, пример:
услуга 1: от '2008-01-01 12:00:00' до '2008-01-02 14:00:00' услуга 2: от '2008-01-01 18:00:00' до '2008-01-02 12:00:00' |
Отправлено: 16:55, 16-09-2008 | #6 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать т.е. имеем ряд временных диапазонов, нужно выбрать накладывающиеся? - да, группировкой тут не обойтись :-(
хотя всё равно не такой уж и монстрообразный запрос получается: |
Отправлено: 20:11, 16-09-2008 | #7 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Busla, Я приведу пример когда этот вариант не работает:
and (u1.dateIn beetwen u2.dateIn and u2.dateOut or u1.dateOut beetwen u2.dateIn and u2.dateOut) .....время................ u1 1111111111111111111 u2 2222222222222 ни начало ни конец u1 не входят в u2. u1 11111111111111 u2 222222222222222 1. если u2 начнётся после того, как u1 закончится - нет пересечения. 2. если u1 начнётся после того, как u2 закончится - нет пересечения. 3. иначе пересекаются. упрощаем условие: not (u2.dateOut <= u1.dateIn or u1.dateOut <= u2.dateIn) --> --> u2.dateOut > u1.dateIn and u1.dateOut > u2.dateIn --> --> u1.dateIn < u2.dateOut and u2.dateIn < u1.dateOut |
Отправлено: 22:12, 16-09-2008 | #8 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:44, 17-09-2008 | #9 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать не-а, не забываю :-P если список состоит только из этих двух записей, то твой вариант запроса выдаст только одну. А надо обе (это всё необходимо для отчёта, чтобы потом человек посмотел пересечения и принял решение, что из них поправить)
|
Отправлено: 06:44, 18-09-2008 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочие БД - SQL запрос на выборку по дате | echo off | Программирование и базы данных | 1 | 10-06-2009 01:15 | |
Delphi - [решено] SQL-запрос на Delphi | FRZ | Программирование и базы данных | 2 | 16-04-2009 15:42 | |
sql запрос | Вебмастеру | 20 | 30-12-2006 22:31 | ||
SQL запрос | pauluss | Вебмастеру | 5 | 11-06-2004 09:14 | |
SQL-запрос | anridir | Программирование и базы данных | 2 | 23-09-2002 07:11 |
|