|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
Alex-tlt
09.07.18
✎
14:41
|
Суть такая. У меня есть два документа (РН и ДЗ). Надо сравнить номенклатуру и выбрать из ДЗ только те, которых нет в РН. Пишу такой запрос.
ВЫБРАТЬ ДополнительныеЗатратыСписокНоменклатуры.Номенклатура КАК Номенклатура ИЗ Документ.ДополнительныеЗатраты.СписокНоменклатуры КАК ДополнительныеЗатратыСписокНоменклатуры, Документ.РасходнаяНакладная КАК РасходнаяНакладная ГДЕ ДополнительныеЗатратыСписокНоменклатуры.Ссылка = &СсылкаДок И ДополнительныеЗатратыСписокНоменклатуры.Номенклатура <> РасходнаяНакладная.СписокНоменклатуры.Номенклатура И РасходнаяНакладная.СписокНоменклатуры.Ссылка = &Ссылка Если в условии делаю проверку на равенство, то все работает, но мне нужна не совпадающая номенклатура в документах, а наоборот. Ставлю <> и запрос выдает мне всю номенклатуру ДЗ. Что я не так делаю? Подскажите пожалуйста. |
|||
1
novichok79
09.07.18
✎
14:42
|
(0) ДЗ левое соединение РН по ДЗ.Номенклатура = РН.Номенклатура Где РН.Номенклатура Есть NULL
|
|||
2
Малыш Джон
09.07.18
✎
14:43
|
Ты все не так делаешь)
Используй левое соединение и поставь условие, где значение из правой таблицы есть null |
|||
3
Alex-tlt
09.07.18
✎
14:47
|
Спасибо, сейчас попробую. Пробовал соединениями, но на нулл не проверял.
Малыш Джон, а можешь сказать как правильно сделать? А то я только разбираюсь, и многое не знаю... |
|||
4
AceVi
09.07.18
✎
14:53
|
Документ.ДополнительныеЗатраты.СписокНоменклатуры КАК ДополнительныеЗатратыСписокНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ ДополнительныеЗатратыСписокНоменклатуры,
Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладная ПО ДополнительныеЗатратыСписокНоменклатуры.Номенклатура = РасходнаяНакладная.Номенклатура ГДЕ РасходнаяНакладная.Номенклатура ЕСТЬ NULL |
|||
5
Alex-tlt
09.07.18
✎
15:06
|
ВЫБРАТЬ
ДополнительныеЗатратыСписокНоменклатуры.Номенклатура КАК Номенклатура ИЗ Документ.ДополнительныеЗатраты.СписокНоменклатуры КАК ДополнительныеЗатратыСписокНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры ПО ДополнительныеЗатратыСписокНоменклатуры.Номенклатура = РасходнаяНакладнаяСписокНоменклатуры.Номенклатура ГДЕ ДополнительныеЗатратыСписокНоменклатуры.Ссылка = &СсылкаДок И РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка И РасходнаяНакладнаяСписокНоменклатуры.Номенклатура ЕСТЬ NULL Вот, что получилось. Но теперь запрос ничего не выдает. Пустая ТЗ. |
|||
6
crasler
09.07.18
✎
15:13
|
Попробуй так
ВЫБРАТЬ ДополнительныеЗатратыСписокНоменклатуры.Номенклатура КАК Номенклатура ИЗ Документ.ДополнительныеЗатраты.СписокНоменклатуры КАК ДополнительныеЗатратыСписокНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры ПО ДополнительныеЗатратыСписокНоменклатуры.Номенклатура = РасходнаяНакладнаяСписокНоменклатуры.Номенклатура И РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка ГДЕ ДополнительныеЗатратыСписокНоменклатуры.Ссылка = &СсылкаДок И РасходнаяНакладнаяСписокНоменклатуры.Номенклатура ЕСТЬ NULL |
|||
7
Alex-tlt
09.07.18
✎
15:17
|
crasler спасибо!!! Все сразу заработало! А почему так? Можно объяснить вкратце, если не сложно
|
|||
8
Alex-tlt
09.07.18
✎
15:17
|
Ведь по сути то запросы, которые предлагали тоже должны были работать
|
|||
9
crasler
09.07.18
✎
15:26
|
Предыдущий запрос работал только если бы допустим был только один документ ДЗ и один РН, т.к. условие после ГДЕ обрабатывается уже после соединения таблиц.
|
|||
10
Alex-tlt
09.07.18
✎
15:28
|
Спасибо! Теперь понятно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |