|
Запрос временные таблицы левое соединение | ☑ | ||
---|---|---|---|---|
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
|
"Объединить" не пробовал? По аналогии как Основные и Дополнительные начисления собираются.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |