|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - украшаем запрос MS SQL |
|
|
Разное - украшаем запрос MS SQL
|
Ветеран Сообщения: 1180 |
Профиль | Отправить PM | Цитировать 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 |
|