Объясните смысл запроса: цены послед. поступлений

1. inf012 20.11.20 22:26 Сейчас в теме
Здравствуйте
Смотрю в конфе такой кусок:

|ВЫБРАТЬ
	|	Товары.Ссылка.МоментВремени          КАК МоментВремени,
	|	Товары.Номенклатура                  КАК Номенклатура
         ...
	|ПОМЕСТИТЬ ЦеныПоступлений
	|ИЗ
	|	Документ.Поступление.Товары КАК Товары
	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаТовары ПО Товары.Номенклатура = ТаблицаТовары.Номенклатура
	|ГДЕ
	|	Товары.Ссылка.Проведен
	|	И Товары.Ссылка.Контрагент = &Контрагент
	|	И Товары.Ссылка.Дата <= &Дата
	|;
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ЦеныПоступлений.Номенклатура         КАК Номенклатура,
	...
	|ПОМЕСТИТЬ ЦеныПоследнихПоступлений
	|ИЗ
	|	ЦеныПоступлений КАК ЦеныПоступлений
	|	
	|	ЛЕВОЕ СОЕДИНЕНИЕ 
	|		ЦеныПоступлений КАК Отбор
	|	ПО
	|		ЦеныПоступлений.Номенклатура = Отбор.Номенклатура
	|		И ЦеныПоступлений.МоментВремени < Отбор.МоментВремени
	|ГДЕ
	|	Отбор.МоментВремени ЕСТЬ NULL;
Показать


Вот этот кусок условия не могу понять, что тут происходит:
|		И ЦеныПоступлений.МоментВремени < Отбор.МоментВремени
|ГДЕ
|	Отбор.МоментВремени ЕСТЬ NULL


То есть, соединяют таблицу саму с собой.
Что за значения
МоментВремени ЕСТЬ NULL
Это какие?
И что за сравнение тогда
ЦеныПоступлений.МоментВремени < Отбор.МоментВремени

Если у нас отбор МоментВремени ЕСТЬ NULL
Найденные решения
2. shurikvz 20.11.20 22:49 Сейчас в теме
Все верно.

Пример постройте, и будет понятно.

Возьмите простейшую таблицу из двух строк:
Номен1 19.11.20
Номен1 20.11.20

Теперь левым соединением присоедините ее к себе, итог получится:
ЦеныПоступлений.Номен1 - ЦеныПоступлений.19.11.20 - Отбор.Номен1 - Отбор.20.11.20
ЦеныПоступлений.Номен1 - ЦеныПоступлений.20.11.20 - NULL - NULL

Условием берете последнюю строку и получаете дату последней цены.
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. shurikvz 20.11.20 22:49 Сейчас в теме
Все верно.

Пример постройте, и будет понятно.

Возьмите простейшую таблицу из двух строк:
Номен1 19.11.20
Номен1 20.11.20

Теперь левым соединением присоедините ее к себе, итог получится:
ЦеныПоступлений.Номен1 - ЦеныПоступлений.19.11.20 - Отбор.Номен1 - Отбор.20.11.20
ЦеныПоступлений.Номен1 - ЦеныПоступлений.20.11.20 - NULL - NULL

Условием берете последнюю строку и получаете дату последней цены.
3. uno-c 234 23.11.20 12:23 Сейчас в теме
Интересная фишка, можно максимум не рассчитывать.
4. SlavaKron 23.11.20 15:36 Сейчас в теме
Приём изящный, а производительность не очень. Проверил на чистых данных в вакууме в клиент-серверной базе: МАКСИМУМ отработал быстрее в 3 раза. На файловой – в 10 раз.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)