|
В запросе не работает условие ГДЕ | ТабН.Артикул = &Null Помогите разобраться | ☑ | ||
---|---|---|---|---|
0
evorle145
05.07.12
✎
15:15
|
У меня две таблицы ТабМ и ТабН. Мне нужно выбрать все записи из таблицы ТабМ, если артикул из ТабМ есть в ТабН, то такую записью вообще не брать. Делаю вот так:
помещаю сначала в внутренние таблицы, а потом полное внешнее соединение делаю с условием где артикул из табН равен Null. Запрос2 = Новый Запрос; Запрос2.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос2.Текст = " |ВЫБРАТЬ | ТабН.Артикул | ПОМЕСТИТЬ ТабН |ИЗ &ТабН КАК ТабН"; Запрос2.УстановитьПараметр("ТабН", ТабН); Запрос2.Выполнить(); Запрос2.Текст = " |ВЫБРАТЬ | ТабМ.Артикул, | ТабМ.Номенклатура, | ТабМ.Цена, | ТабМ.Количество | ПОМЕСТИТЬ ТабМ |ИЗ &ТабМ КАК ТабМ"; Запрос2.УстановитьПараметр("ТабМ", ТабМ); Запрос2.Выполнить(); // Теперь ТЗ можно использовать в запросе: Запрос2.Текст = "ВЫБРАТЬ | ТАБМ.Артикул КАК Артикул, | ТАБМ.Номенклатура, | ТАБМ.Цена, | ТАБМ.Количество КАК Количество, | ТабН.Артикул КАК Артикул1 |ИЗ | ТАБМ КАК ТАБМ | ПОЛНОЕ СОЕДИНЕНИЕ ТабН КАК ТабН | ПО ТАБМ.Артикул = ТабН.Артикул |ГДЕ | ТабН.Артикул = &Null"; Запрос2.УстановитьПараметр("NULL", NULL); ТабТест = Запрос2.Выполнить().Выгрузить(); Однако не работает!!! ТабТест получается пустой! Хотя ТабМ и ТабН 100% не пустые. Помогите пожалуйста |
|||
1
Hipernate
05.07.12
✎
15:20
|
на Null равентсво нельзя делать есть специальная конструкция "есть Null"
|
|||
2
Darvator
05.07.12
✎
15:22
|
ЕСТЬNULL(ТабН.Артикул, 0)
И потом условие ТабН.Артикул = 0 |
|||
3
evorle145
05.07.12
✎
15:22
|
Вот блин, все время про это забываю! То есть надо так: Где ТабН.Артикул естьNUll?
|
|||
4
Ненавижу 1С
гуру
05.07.12
✎
15:22
|
(3) нет
|
|||
5
Ненавижу 1С
гуру
05.07.12
✎
15:22
|
Запрос2.УстановитьПараметр("NULL", NULL);
шикарно |
|||
6
Ненавижу 1С
гуру
05.07.12
✎
15:23
|
используй Неопределено, до NULL ты не дорос
|
|||
7
del123
05.07.12
✎
15:26
|
жестоко :))
|
|||
8
Лефмихалыч
05.07.12
✎
15:26
|
(0) читай мануалы. В запросе любые сравнения с NULL возвращают всегда ложь
|
|||
9
Ненавижу 1С
гуру
05.07.12
✎
15:29
|
(8) это в 1С, а мне больше нравится "любые сравнения с NULL возвращают NULL"
|
|||
10
evorle145
05.07.12
✎
15:30
|
(8), так ведь знал, да забыл. Без вашей помощи еще б не скоро вспомнил!
|
|||
11
evorle145
05.07.12
✎
15:34
|
вот так переделал:
Запрос2.Текст = "ВЫБРАТЬ | ТАБМ.Артикул КАК Артикул, | ТАБМ.Номенклатура, | ТАБМ.Цена, | ТАБМ.Количество КАК Количество |ИЗ | ТАБМ КАК ТАБМ | ПОЛНОЕ СОЕДИНЕНИЕ ТабН КАК ТабН | ПО ТАБМ.Артикул = ТабН.Артикул |ГДЕ | ЕСТЬNULL(ТабН.Артикул, 0) =&Ноль"; Запрос2.УстановитьПараметр("Ноль", 0); Оптимально? |
|||
13
Defender aka LINN
05.07.12
✎
15:36
|
(11) Класс. Давай еще лучше сделаем:
|
|||
14
evorle145
05.07.12
✎
15:38
|
(13), а в чем я не прав?
|
|||
15
del123
05.07.12
✎
15:39
|
(14) зачем ноль параметром передавать??
|
|||
16
vde69
05.07.12
✎
15:39
|
(11)>>>Оптимально?
смеешся? 1. "ТАБМ" и "ТабН" - чего буквы экономишь? называть понятными словами никак? 2. сравнение по текстовому полю совсем не айс 3. можно так "ГДЕ ТабН.Артикул ЕСТЬ NULL" |
|||
17
Darvator
05.07.12
✎
15:39
|
Запрос2.Текст = "ВЫБРАТЬ
| ЕСТЬNULL(ТАБМ.Артикул, 0) КАК Артикул, | ТАБМ.Номенклатура, | ТАБМ.Цена, | ТАБМ.Количество КАК Количество |ИЗ | ТАБМ КАК ТАБМ | ПОЛНОЕ СОЕДИНЕНИЕ ТабН КАК ТабН | ПО ТАБМ.Артикул = ТабН.Артикул |ГДЕ | ТабН.Артикул =0"; Научишься, не переживай. |
|||
18
evorle145
05.07.12
✎
15:42
|
(16), критику понял, только вот что касается пункта 3,разве в (3), я не тоже самое написал
(17), наверное имелось ввиду не "ЕСТЬNULL(ТАБМ.Артикул, 0) КАК Артикул," а "ЕСТЬNULL(ТАБН.Артикул, 0) КАК Артикул," |
|||
19
evorle145
05.07.12
✎
15:43
|
(17), хотя это не важно
|
|||
20
0_Serg_0
05.07.12
✎
15:47
|
(18) не тоже самое)
|
|||
21
evorle145
05.07.12
✎
15:50
|
(20),Э, пробел пропустил, согласен)
|
|||
22
evorle145
05.07.12
✎
15:50
|
Большое спасибо за подсказки!
Сделал как написано в (17) и (16). Оба варианта работают. |
|||
23
Лефмихалыч
05.07.12
✎
15:54
|
(9) тогда внешние соединения в запросах будут в вечный цикл впадать, получая NULL в результате проверки условия соединения
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |