|
Помощь с запросом | ☑ | ||
---|---|---|---|---|
0
lamp
17.08.12
✎
11:49
|
Мой первый опыт с "левым соединением":
ВЫБРАТЬ РАЗЛИЧНЫЕ Основные.Сотрудник, Основные.Сотрудник.ФизЛицо.ДатаРождения КАК ДатаРождения, Основные.ПериодРегистрации, Данные.Период, Данные.Должность, Данные.ПодразделениеОрганизации ИЗ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК Основные ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РаботникиОрганизаций.Период, РаботникиОрганизаций.Сотрудник, РаботникиОрганизаций.Должность, РаботникиОрганизаций.ПодразделениеОрганизации ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(Основные.ПериодРегистрации) КАК РаботникиОрганизаций ) КАК Данные ПО Основные.Сотрудник = Данные.Сотрудник ГДЕ ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания УПОРЯДОЧИТЬ ПО ПериодРегистрации вылезает ошибка поле не найдено "Основные.ПериодРегистрации" в строке РегистрСведений.РаботникиОрганизаций.СрезПоследних(Основные.ПериодРегистрации) КАК РаботникиОрганизаций |
|||
1
lamp
17.08.12
✎
11:49
|
что не так?
|
|||
2
OnCheck
17.08.12
✎
11:50
|
В параметр в ВТ можно передавать только параметры, поля запроса нельзя передавать. Погугли, много инфы.
|
|||
3
vicof
17.08.12
✎
11:51
|
||||
4
pessok
17.08.12
✎
11:52
|
твоя ошибка ну никак не связана с левым соединением
|
|||
5
lamp
17.08.12
✎
11:55
|
Это мне понятно. хорошо, а как можно составить запрос, чтобы вытащить то, что мне надо вытащить (из регистра ОсновныеНачисленияРаботниковОрганизации), добавив при этом нужные поля из регистра РаботникиОрганизаций, срезая по полю ПериодРегистрации?
Никак? |
|||
6
vicof
17.08.12
✎
11:57
|
(5) читай (3)
|
|||
7
lamp
17.08.12
✎
12:00
|
читал... но нет... не осилил, не разобрался как это применить в моем конкретном случае ((
|
|||
8
OnCheck
17.08.12
✎
12:05
|
не используй срез последних, сделай запрос к таблице РегистрСведений.РаботникиОрганизаций, ведь срез последних это частный случай этой таблицы
|
|||
9
Turpentine
17.08.12
✎
12:06
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
Основные.Сотрудник, Основные.Сотрудник.ФизЛицо.ДатаРождения КАК ДатаРождения, Основные.ПериодРегистрации, Данные.Период, Данные.Должность, Данные.ПодразделениеОрганизации ИЗ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК Основные ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РаботникиОрганизаций.Период, РаботникиОрганизаций.Сотрудник, РаботникиОрганизаций.Должность, РаботникиОрганизаций.ПодразделениеОрганизации ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаОкончания) КАК РаботникиОрганизаций Где РаботникиОрганизаций.Период между &ДатаНачала И &ДатаОкончания ) КАК Данные ПО Основные.Сотрудник = Данные.Сотрудник ГДЕ ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания УПОРЯДОЧИТЬ ПО ПериодРегистрации |
|||
10
lamp
17.08.12
✎
12:49
|
(8) в этом случае на каждого сотрудника выдается несколько должностей и подразделений, если у него они менялись, так не годится. Нужно, чтобы для каждого сотрудника выдавалась только 1 запись, актуальная на дату Основные.ПериодРегистрации, поскольку в основном запросе список сотрудников повторится столько раз, сколько месяцев было начислений (а интервал - год)
|
|||
11
lamp
17.08.12
✎
12:52
|
(9) да, теперь на каждый период регистрации на 1 работника выпадает 1 запись, но большей частью записи пустые, ведь может оказаться так, что должность и подразделение были назначены ранее &ДатаНачала
|
|||
12
lamp
17.08.12
✎
13:02
|
Ладно, сейчас яснее изложу - чего пытаюсь добиться.
Идея в том, что основной запрос выводит мне список работающих сотрудников на каждый месяц (в диапазоне рабочего года). Потом я пройдусь по этому списку и соберу средний возраст по подразделениям и должностям. Но что если сотрудник в течение года менял должность и подразделение? Для этого я и пытался брать СрезПоследних на Основные.ПериодРегистрации. Но если в СрезПоследних нельзя ставить в качестве параметра Основные.ПериодРегистрации - тогда даже не знаю... Конечно, если очевидное решение, никаких левых присоединений, выгрузить запрос в таблицу, пройтись по ней и проставить должности и подразделения по полю ПериодРегистрации. Но эти будет работать в разы дольше и неизящно как-то... |
|||
13
AlexNew
17.08.12
✎
13:18
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
ОсновныеНачисленияРаботниковОрганизаций.Сотрудник КАК Сотрудник, ОсновныеНачисленияРаботниковОрганизаций.Сотрудник.Физлицо.ДатаРождения, ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации КАК ПериодРегистрации, РаботникиОрганизаций.Период, РаботникиОрганизаций.Должность, РаботникиОрганизаций.ПодразделениеОрганизации ИЗ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ПО ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации >= РаботникиОрганизаций.Период И ОсновныеНачисленияРаботниковОрганизаций.Сотрудник = РаботникиОрганизаций.Сотрудник ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций1 ПО ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации >= РаботникиОрганизаций1.Период И (РаботникиОрганизаций.Период < РаботникиОрганизаций1.Период) И (РаботникиОрганизаций.Сотрудник = РаботникиОрганизаций1.Сотрудник) ГДЕ РаботникиОрганизаций1.Сотрудник ЕСТЬ NULL И ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания УПОРЯДОЧИТЬ ПО Сотрудник, ПериодРегистрации |
|||
14
lamp
17.08.12
✎
13:48
|
(13) запустил этот запрос, что-то уже несколько минут висит ((
|
|||
15
lamp
17.08.12
✎
13:53
|
(13) запрос завис намертво, пришлось вырубать 1с-ку
|
|||
16
Светлый Гений
17.08.12
✎
13:54
|
(0)Так не взлетит. Если бы у тебя была конструкция "В", а не вложенный запрос, тогда бы проканало, а так не проканает.
|
|||
17
AlexNew
17.08.12
✎
14:39
|
(15) Ты какой период регистрации сделал? И база у тебя?
|
|||
18
lamp
17.08.12
✎
15:41
|
(17) период у меня - с начала до конца года. база - локальная копия реальной, что ведется с 1 января 2012; в (12) я об этом писал.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |