Соединение в запросе

1. aritochka777 13.09.21 11:04 Сейчас в теме
Еще очень нудна помощь с запросом

ПЖЛ, помогите

//Получаем остатки на начало месяца

ВЫБРАТЬ
	СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
	СвободныеОстаткиОстатки.Склад КАК Склад,
	ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ОстатокНачалоМесяца
ПОМЕСТИТЬ ВТОстатки
ИЗ
	РегистрНакопления.СвободныеОстатки.Остатки(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), ) КАК СвободныеОстаткиОстатки
{ГДЕ
	СвободныеОстаткиОстатки.Номенклатура.*}
;


//// Получаем колонку с начальным остатком и все приходы по товарам
ВЫБРАТЬ
ВТОстатки.ОстатокНачалоМесяца КАК ОстатокНачалоМесяца,

	ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
	ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход КАК ВНаличииПриход,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииОборот КАК ВНаличииОборот,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход КАК ВНаличииРасход,
	ТоварыНаСкладахОстаткиИОбороты.ПериодДень КАК ПериодДень

ИЗ
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ ВТОстатки КАК ВТОстатки
		ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВТОстатки.Номенклатура
ГДЕ
	ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
Показать


Проблема в том, что остатки выводятся для 5000 строк, а вот когда соединение с приходом (скажем за 2 дня), то остается 60 строк
т.е. если прихода не было, то и не выводятся строки с номенклатурой и остатками.
Правое соединение тоже не работает.
КАК сделать, чтобы получить и остатки по всем номенклатуре, если их нет, тогда нули, и колонки с приходом по дням если были для этой номенклатуры.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FatPanzer 13.09.21 11:07 Сейчас в теме
(1)
КАК сделать, чтобы получить и остатки по всем номенклатуре, если их нет, тогда нули, и колонки с приходом по дням если были для этой номенклатуры.
Ну так сначала надо получить тот состав номенклатуры, который хочется видеть в итоговом результате, и уже его потом соединять с необходимыми показателями.
3. nomad_irk 72 13.09.21 11:09 Сейчас в теме
(1)нужна таблица вида

Номенклатура|ДеньВнутриПериодаОтчета

за период отчета и эта таблица дожна быть основная в соединениях.

либо используйте ОБЪЕДИНЕНИЕ таблиц вместо соединения
7. aritochka777 13.09.21 11:37 Сейчас в теме
(3) Как соединить 2 строки в одну? Помогитееее

ВЫБРАТЬ
	СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
	СвободныеОстаткиОстатки.Склад КАК Склад,
	ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ОстатокНачалоМесяца,
	0 КАК ВНаличииНачальныйОстаток,
		0 КАК ВНаличииПриход,
			0 КАК ВНаличииРасход,
				0 КАК ВНаличииКонечныйОстаток,
						0 КАК ПериодДень


ИЗ
	РегистрНакопления.СвободныеОстатки.Остатки(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), ) КАК СвободныеОстаткиОстатки
	{ГДЕ
	СвободныеОстаткиОстатки.Номенклатура.*}

  ОБЪЕДИНИТЬ

ВЫБРАТЬ
  	ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
	ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
	0 КАК ОстатокНачалоМесяца,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход КАК ВНаличииПриход,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход КАК ВНаличииРасход,

	ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
		ТоварыНаСкладахОстаткиИОбороты.ПериодДень КАК ПериодДень
ИЗ   РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
			ГДЕ
	ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
Показать
Прикрепленные файлы:
8. ZergKRSK 129 13.09.21 11:41 Сейчас в теме
(7)
Как соединить 2 строки в одну?

сгруппировать
9. aritochka777 13.09.21 11:52 Сейчас в теме
12. nomad_irk 72 13.09.21 13:00 Сейчас в теме
(9)Сделайте еще один пакет запроса, в нем группируйте по номенклатуре результат первого пакета.
5. user705522_constantin_h 35 13.09.21 11:29 Сейчас в теме
(1)Вы же выбираете ЛЕВОЕ СОЕДИНЕНИЕ, соответственно остатки добавляются только к приходам. Если вам нужны все остатки сделайте ПОЛНОЕ СОЕДИНЕНИЕ.
И ещё должно быть так:
//// Получаем колонку с начальным остатком и все приходы по товарам
ВЫБРАТЬ
ЕСТЬNULL(ВТОстатки.ОстатокНачалоМесяца, 0) КАК ОстатокНачалоМесяца,

И соединение должно быть не только по номенклатуре, но и по складу.
4. VZyryanov 13.09.21 11:24 Сейчас в теме
Правое соединение заработает, если убрать
ГДЕ
ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
6. aritochka777 13.09.21 11:35 Сейчас в теме
(4) Тогда в приходы попадут и выпуски продукции, а мне нужны тольок приобретения
11. VZyryanov 13.09.21 12:09 Сейчас в теме
(6) Если условие из ГДЕ перенести в ПО, то будут все остатки и не будет выпуска продукции.
Правое соединение это экзотика. Лучше переставить местами таблицы и использовать левое соединение.
Как-то так:
ИЗ
ВТОстатки КАК ВТОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ВТОстатки.Номенклатура
И ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
10. d.batovskiy 13.09.21 11:54 Сейчас в теме
ВЫБРАТЬ
СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
СвободныеОстаткиОстатки.Склад КАК Склад,
ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ОстатокНачалоМесяца
ПОМЕСТИТЬ ВТОстатки
ИЗ
РегистрНакопления.СвободныеОстатки.Остатки(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), ) КАК СвободныеОстаткиОстатки
{ГДЕ
СвободныеОстаткиОстатки.Номенклатура.*}
;


//// Получаем колонку с начальным остатком и все приходы по товарам
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход КАК ВНаличииПриход,
ТоварыНаСкладахОстаткиИОбороты.ВНаличииОборот КАК ВНаличииОборот,
ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход КАК ВНаличииРасход,
ТоварыНаСкладахОстаткиИОбороты.ПериодДень КАК ПериодДень
ПОМЕСТИТЬ ВТПриходы
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты

ГДЕ
ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
;

ВЫБРАТЬ
ЕстьNULL(ВТОстатки.ОстатокНачалоМесяца,0) КАК ОстатокНачалоМесяца,
ВТПриходы.Номенклатура КАК Номенклатура,
ВТПриходы.Склад КАК Склад,
ЕстьNULL(ВТПриходы.ВНаличииНачальныйОстаток,0) КАК ВНаличииНачальныйОстаток,
ЕстьNULL(ВТПриходы.ВНаличииКонечныйОстаток,0) КАК ВНаличииКонечныйОстаток,
ЕстьNULL(ВТПриходы.ВНаличииПриход,0) КАК ВНаличииПриход,
ЕстьNULL(ВТПриходы.ВНаличииОборот,0) КАК ВНаличииОборот,
ЕстьNULL(ВТПриходы.ВНаличииРасход,0) КАК ВНаличииРасход,
ВТПриходы.ПериодДень КАК ПериодДень

ИЗ
ВТПриходы КАК ВТПриходы
ПОЛНОЕ СОЕДИНЕНИЕ ВТОстатки КАК ВТОстатки
ПО ВТПриходы.Номенклатура = ВТОстатки.Номенклатура
И ВТПриходы.Склад= ВТОстатки.Склад
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот