|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
Добрый день! Может кто подскажет с запросом? Есть кадродые премещения сотрудников. Нужно узнать предыдущее подразделение сотрудника. Если в запрос передавать параметр &Период , то он формируется нормально. А как можно обойтись без него, чтобы использовать СКД. Как соединить таблицу последних движений с таблицей кадровых перемещений, где РаботникиОрганизаций.Период < КадровоеПеремещение.ДатаНачала? ВЫБРАТЬ КадровоеПеремещение.Ссылка, КадровоеПеремещение.Сотрудник, КадровоеПеремещение.ДатаНачала, ВложенныйЗапрос.Период ИЗ Документ.КадровоеПеремещениеОрганизаций.РаботникиОрганизации КАК КадровоеПеремещение ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РаботникиОрганизаций.Сотрудник КАК Сотрудник, МАКСИМУМ(РаботникиОрганизаций.Период) КАК Период ИЗ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ГДЕ РаботникиОрганизаций.Период < &Период СГРУППИРОВАТЬ ПО РаботникиОрганизаций.Сотрудник) КАК ВложенныйЗапрос ПО КадровоеПеремещение.Сотрудник = ВложенныйЗапрос.Сотрудник ГДЕ КадровоеПеремещение.ДатаНачала МЕЖДУ &НачалоПериода И &КонецПериода ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 13:01 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
Предпоследнее вообще за весь период или на определенную дату? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 16:05 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
нужно предпоследнее за период ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 16:58 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
Тогда у вас немного не вяжется логически. Вы накладываете ограничение на выборку документов, но при этом вам необходимо наложить ограничение на выборку из регистра и ограничение выборки из регистра = конечной дате ограничения выборки документов, иначе у вас выберется не совсем то что нужно... Боюсь что одним запросом сделать это у вас в любом случае не получится. Придется кроме запроса написать небольшой код. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:06 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
Можно код писать и передавать параметр &Период. Но мне нужно получить выборку только запросом. Может вложенный запрос по движениям как-то связать по периодам? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:14 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
еще есть вирт таблица срез последних ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:19 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
leafеще есть вирт таблица срез последних Тут записи нужны именно ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:22 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
в срезпоследних период тоже нельзя передать Левое соединение РегистрСведений.РаботникиОрганизацийСрезПоследних(ДобавитьКДате(ДатаНачала, День, -1),) как сделать не знаю ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:23 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
max_nlМожно код писать и передавать параметр &Период. Вы видимо меня не поняли Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
max_nlМожет вложенный запрос по движениям как-то связать по периодам? У регистров сведений нет движений, вам необходимо выбрать предпоследнюю запись из регистра с ограничением по сотруднику и периоду, язык запросов в отличии от T-SQL не может в подзапросы в качестве параметров передавать значения строк основной выборки. max_nlНо мне нужно получить выборку только запросом. С чем связано такое требование. Возможно получится сделать это через менеджер ВТ надо попробовать так на вскидку не скажу ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:27 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
О, есть опеделеного рода идея, я ее проверю! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:34 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
///Может вложенный запрос по движениям как-то связать по периодам? имею ввиду движения работника (прием, перемещение, увольнение) Эти движения хранятся в периоддическом регистре "Работники организаций" ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:37 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
А одним запросом нужно для схемы компоновки данных. к этой выборке будет еще много других соединений. Но сейчас главная проблема с выбором даты предыдущего состояния работника ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:40 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
max_nlА одним запросом нужно для схемы компоновки данных. к этой выборке будет еще много других соединений. Но сейчас главная проблема с выбором даты предыдущего состояния работника Да должно получиться одинм запросом и без менеджера вт. Запрос сейчас написать не успею, да и ЗуПа под рукой нет. Если до завтра подождете, то начеркаю запросец ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:48 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
большое спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:49 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
Итак вот сей запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
Можно по вкусу ддобавить параметров для ограничения верхней границы выборки по периоду. А так уже дело ваше, как вы это дело будете использовать. С вас сосуд с булькающим :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 09:12 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
В том и дело, что нужно получить все перемещения сотрудника (ДатаТекущегоПеремещения и ДатаПредыдущегоПеремещения) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 12:04 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
max_nlВ том и дело, что нужно получить все перемещения сотрудника (ДатаТекущегоПеремещения и ДатаПредыдущегоПеремещения) Ну так а в чем проблема то? :-) Или вы ждете что за вас весь запрос напишут а потом копи паст и зарплату считать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 12:06 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
Ваш запрос делает выборку перыдущих дат А как таблицу перемещений связать с этим запросом, чтобы в результате были строки перемещений с датой предыдущего состояния. Я пробовал вчера такой запрос ВЫБРАТЬ КадровоеПеремещение.Ссылка, КадровоеПеремещение.Сотрудник, КадровоеПеремещение.ДатаНачала КАК ДатаПеремещения, ВложенныйЗапрос.Период КАК ПериодДо ИЗ Документ.КадровоеПеремещениеОрганизаций.РаботникиОрганизации КАК КадровоеПеремещение ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ДвиженияРаботника.Регистратор КАК Регистратор, МАКСИМУМ(ДвиженияРаботника.Период) КАК Период, ДвиженияРаботника.Сотрудник КАК Сотрудник ИЗ РегистрСведений.РаботникиОрганизаций КАК ДвиженияРаботника ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Работники.Сотрудник КАК Сотрудник, МАКСИМУМ(Работники.Период) КАК Период ИЗ РегистрСведений.РаботникиОрганизаций КАК Работники СГРУППИРОВАТЬ ПО Работники.Сотрудник) КАК Периоды ПО (Периоды.Сотрудник = ДвиженияРаботника.Сотрудник) И (Периоды.Период > ДвиженияРаботника.Период) СГРУППИРОВАТЬ ПО ДвиженияРаботника.Регистратор, ДвиженияРаботника.Сотрудник) КАК ВложенныйЗапрос ПО КадровоеПеремещение.Сотрудник = ВложенныйЗапрос.Сотрудник ГДЕ КадровоеПеремещение.ДатаНачала МЕЖДУ &НачалоПериода И &КонецПериода И КадровоеПеремещение.ДатаНачала > ВложенныйЗапрос.Период Но он возвращает несколько предыдущих дат на одно перемещение ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 13:16 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
А вы про "Регистратор" не в курсе в регистре РаботникиОрганизаций ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 13:58 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
А что регистратор? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 14:45 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
Вы видимо так и не поняли основную идею... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 17:06 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
Разобрался с запросом. Вот запрос, который получает предпоследнее место и дату сотрудника ВЫБРАТЬ Работники.Период, Работники.Сотрудник, МАКСИМУМ(РаботникиСрез.Период) КАК Период1 ИЗ РегистрСведений.РаботникиОрганизаций КАК Работники ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиСрез ПО Работники.Сотрудник = РаботникиСрез.Сотрудник И Работники.Период > РаботникиСрез.Период ГДЕ Работники.Период МЕЖДУ &НачалоПериода И &КонецПериода СГРУППИРОВАТЬ ПО Работники.Период, Работники.Сотрудник ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2009, 11:18 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
XenoX, язык запросов в отличии от T-SQL не может в подзапросы в качестве параметров передавать значения строк основной выборки. Можете доказать?! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2009, 12:31 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
johnn06XenoX, язык запросов в отличии от T-SQL не может в подзапросы в качестве параметров передавать значения строк основной выборки. Можете доказать?! МОЖЕТ!!! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2009, 13:39 |
|
Запрос с левым соединением
|
|||
---|---|---|---|
#18+
RMihjohnn06XenoX, язык запросов в отличии от T-SQL не может в подзапросы в качестве параметров передавать значения строк основной выборки. Можете доказать?! МОЖЕТ!!! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Все правильно! а теперь можете превести скрипт на T-SQL, где в подзапросе справа от inner join используется записи выборки, стоящей слева от inner join, по сути транслировать этот запрос в T-SQL, чтобы он работал. интерсено посмотреть просто... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2009, 14:24 |
|
|
start [/forum/topic.php?fid=28&msg=35773648&tid=1524142]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
others: | 320ms |
total: | 479ms |
0 / 0 |