Имя: Пароль:
1C
1С v8
Запрос временные таблицы левое соединение
0 Nast
 
24.06.13
12:55
Помогите разобраться с запросом.
Надо выбрать даты приема и увольнения сотрудников.
Почему не получается Левое соединение, если делать через временные таблицы

"ВЫБРАТЬ
         |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.Физлицо,
         |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаНачала
         |ПОМЕСТИТЬ Прием
         |ИЗ
         |    РегистрСведений.ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы КАК ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы
         |ГДЕ
         |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаНачала <> ДАТАВРЕМЯ(1, 1, 1)
         |;
         |
         |////////////////////////////////////////////////////////////////////////////////
         |ВЫБРАТЬ
         |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.Физлицо,
         |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаОкончания
         |ПОМЕСТИТЬ Увольнение
         |ИЗ
         |    РегистрСведений.ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы КАК ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы
         |ГДЕ
         |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1)
         |;
         |
         |////////////////////////////////////////////////////////////////////////////////
         |ВЫБРАТЬ
         |    Прием.Физлицо,
         |    Прием.ДатаНачала,
         |    Увольнение.Физлицо КАК Физлицо1,
         |    Увольнение.ДатаОкончания
         |ИЗ
         |    Прием КАК Прием
         |        ЛЕВОЕ СОЕДИНЕНИЕ Увольнение КАК Увольнение
         |        ПО Прием.Физлицо = Увольнение.Физлицо";

Надо чтобы результат был в виде
Физлицо  ДатаНачала ДатаОкончания
Петров   17.04.12    28.04.12
Петров   28.04.12    02.06.12


А получается

Петров   17.04.12    28.04.12
Петров   17.04.12    02.06.12
Петров   28.04.12    28.04.12
Петров   28.04.12    02.06.12
1 Cube
 
24.06.13
12:57
(0) Сгруппируй результат: две первые колонки в группировки, а последнюю сворачивай с функцией МИНИМУМ.
2 lopus
 
24.06.13
13:00
Зачем тут временные таблицы не понятно.
3 spu79
 
24.06.13
13:02
бред какой-то...
"ВЫБРАТЬ
         |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.Физлицо,
         |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаНачала
 |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаОкончания
         |ГДЕ
         |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаНачала <> ДАТАВРЕМЯ(1, 1, 1)
И
|ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1)
4 spu79
 
24.06.13
13:02
чем не устраивает?
5 Nast
 
24.06.13
13:13
Почему просто левым соединением не добавляется?
6 Nast
 
24.06.13
13:19
Если сгруппировать результат: две первые колонки в группировки, а последнюю сворачивай с функцией МИНИМУМ, то получится
17.04.12    28.04.12
28.08.12    28.04.12
7 Nast
 
24.06.13
13:24
(3) если сделать так, то не выберется вообще ничего, потому что в одной строке либо дата приема, либо дата увольнения
8 Nast
 
24.06.13
13:25
(3) если сделать ИЛИ, то дата увольнения и приема будут не в одной строке, а надо чтобы в таблице значений, в которую выгружается запрос, дата увольнения и приема была в одной строке
9 Nast
 
24.06.13
13:28
(8) т.е. это условие вообще делать не надо, т.к. оно бессмысленно
10 Nast
 
24.06.13
13:29
Надо просто к одной таблице присоединить другую
11 slin-dev
 
24.06.13
13:32
(0) Потому что, в первой и второй таблицах получается по две записи.
12 lopus
 
24.06.13
13:37
А ты по другому не пробовал получить сотрудников с датой прием и увольнения, или принципиально через ВТ
13 lamesnake
 
24.06.13
13:41
(6) Соединяй при условии, что ДатаНачала < ДатаОкончания.
14 mozzga
 
24.06.13
13:49
(0) В третьем запросе берешь справочник физлиц и лепишь к нему две эти ВТ левым соединением
15 mozzga
 
24.06.13
13:49
+(14) по физлицо=физлицо
16 Nast
 
24.06.13
14:19
(12) можно не через временные таблицы, а вложенные запросы, какая разница, хотелось посмотреть через ВТ.
17 Nast
 
24.06.13
14:20
(11) "Потому что, в первой и второй таблицах получается по две записи".
Почему? Если сделать отдельно 2 таблицы, то записи там не дублируются
18 КУНГ ФУ 1С
 
24.06.13
14:42
"ВЫБРАТЬ
         |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.Физлицо,
         |    МАКСИМУМ(ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаНачала)
         |ПОМЕСТИТЬ Прием
         |ИЗ
         |    РегистрСведений.ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы КАК ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы
         |ГДЕ
          |;
         |
        |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаНачала <> ДАТАВРЕМЯ(1, 1, 1)
         |СГРУППИРОВАТЬ ПО
         |       ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.Физлицо
         |////////////////////////////////////////////////////////////////////////////////

         |ВЫБРАТЬ
         |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.Физлицо,
         |    МАКСИМУМ(ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаОкончания)
         |ПОМЕСТИТЬ Увольнение
         |ИЗ
         |    РегистрСведений.ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы КАК ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы
         |ГДЕ
         |    ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1)
         |СГРУППИРОВАТЬ ПО
         |        ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.Физлицо
         |;
         |
         |////////////////////////////////////////////////////////////////////////////////

         |ВЫБРАТЬ
         |    Прием.Физлицо,
         |    Прием.ДатаНачала,
         |    Увольнение.Физлицо КАК Физлицо1,
         |    Увольнение.ДатаОкончания
         |ИЗ
         |    Прием КАК Прием
         |        ЛЕВОЕ СОЕДИНЕНИЕ Увольнение КАК Увольнение
         |        ПО Прием.Физлицо = Увольнение.Физлицо";
19 КУНГ ФУ 1С
 
24.06.13
14:43
МАКСИМУМ() тогда у нас гарантировано в 1 и 2 таблице будет по 1 записи на физ лицо, ну далее левым соединененим
20 КУНГ ФУ 1С
 
24.06.13
14:44
(0) вроде страж 6 лет, а не шарит )
21 lopus
 
24.06.13
14:45
22 spu79
 
24.06.13
16:47
"Объединить" не пробовал? По аналогии как Основные и Дополнительные начисления собираются.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн