|
8.2 Условие в запросе
| ☑ |
0
Aswed
01.11.11
✎
18:23
|
Есть пакет запросов.
В первом я формирую выборку данных и создаю временную таблицу.
Как во втором запросе пакета мне отобрать все данные КРОМЕ выбранных в первом и занесенных во временную таблицу?
Как записать условие не соображу.
|
|
1
palpetrovich
01.11.11
✎
18:26
|
НЕ ?
|
|
2
vinogradъ
01.11.11
✎
18:26
|
смотря что навыбирал в ВТ... not in
|
|
3
luckyluke
01.11.11
✎
18:26
|
(0) смотря куда сколько полей и что за таблица, можно например так:
Где поле1 Не В (Выбрать ВТ_Первогопакета.Поле1 ИЗ ВТ_Первогопакета КАК ВТ_Первогопакета)
|
|
4
Aswed
01.11.11
✎
18:30
|
А ВТ всего одна колонка с элементами справочника.
|
|
5
GROOVY
01.11.11
✎
18:30
|
(4), (3) Все правильно написал.
|
|
6
Aswed
01.11.11
✎
18:31
|
Ок, спасибо. Тады побежал ваять)
|
|
7
KAO111
01.11.11
✎
18:31
|
иногда лучше левое соединение с временной иаблицей где ВТ_Первогопакета.Поле1 есть NULL
|
|
8
GROOVY
01.11.11
✎
18:33
|
(7) Проверка на NULL дико тормозная штука.
|
|
9
KAO111
01.11.11
✎
18:37
|
(8) надо проверять. в файловой базе "Не В (Выбрать" работает довольно медленно, несмотря на наличие индекса.
В клиент-серверной базе временная таблица должна быть обязательно приндексирована по полю, и в этом случае возможно, что пдан запроса будет один и тот же
|
|
10
Aswed
01.11.11
✎
18:41
|
(9) Учел, спасибо
|
|
11
Aswed
01.11.11
✎
18:42
|
(7) Ну так и было реализовано. Но как то мне не нравится такой подход)
|
|
12
KAO111
01.11.11
✎
18:46
|
(11) конечно, зависит от количсва записей во временной таблице, но у нас столкулись со случаем, когда созданный файловый распределенный узел работал значительно медленнее, на проверках НЕ В, чем ЕСТЬ NULL
причем в основной SQL базе этого было не заметно.
|
|