|
v7: Запрос с левым соединением | ☑ | ||
---|---|---|---|---|
0
HighFly
14.01.13
✎
10:35
|
Всем доброго времени суток!
Есть такой запрос: |SELECT | Основной.Сотрудник [Сотрудник $Справочник.Сотрудники], | $ПоследнееЗначение.Сотрудники.Подразделение(Сотрудник,:КонецПериода) as [Отдел $Справочник.Подразделения], | Основной.КоличествоДнейОтпуска, | Основной.ДнейОтозвано, | (select top 1 k.date | from _1SConst k | left join $Справочник.Должности Долж1 on Долж1.id = k.value | where (k.ID = $ИсторияРеквизита.Сотрудники.Должность) | and (k.OBJID = Основной.Сотрудник) | order by k.date) Стаж |FROM | (SELECT Сотр.ID as Сотрудник | , SUM(Документы.КолДней) КоличествоДнейОтпуска | , SUM(CAST(Документы.ОкончаниеОтзыва as float) - Cast(Документы.НачалоОтзыва AS float) + 1) ДнейОтозвано | FROM $Справочник.Сотрудники Сотр | LEFT JOIN (Select | $ДокОтпускПред.КоличествоДнейОтпуска as КолДней, | $ДокОтпускПред.Сотрудник as Сотрудник , | $ДокОтзыва.Начало as НачалоОтзыва, | $ДокОтзыва.Окончание as ОкончаниеОтзыва | FROM $Документ.ПриказПоОтпуску ДокОтпускПред | LEFT JOIN $Документ.ПриказОбОтзыве ДокОтзыва On $ДокОтзыва.ДокОснование = ДокОтпускПред.IDDOC and $ДокОтзыва.ПродлятьОтпуск=0 | INNER JOIN _1SJOURN AS j1 ON ДокОтпускПред.IDDOC = j1.IDDOC and (j1.Closed & 1 = 1) | Where $ДокОтпускПред.НачалоПериода >= :НачалоПериода and $ДокОтпускПред.НачалоПериода <= :КонецПериода | ) Документы | ON Сотр.ID = Документы.Сотрудник | | WHERE $ПоследнееЗначение.Сотрудники.СостояниеФизЛица(Документы.Сотрудник,:ДатаАктуальности) = :СотрудникОсновной | and Сотр.id = $Сотр.ОсновнойЭлемент | GROUP BY | Сотр.ID | ) Основной По идее в нем должны отбираться все элементы справочника "сотрудники", но на деле он отбирает только те, у которых правая часть соединения не равна NULL. Если убрать условие на периоды в подзапросе Документы, то выводятся все элементы справочника, но правая часть, естественно, неправильная. Долго проверял запрос, никак не могу найти ошибку, может быть кто-то подскажет? |
|||
1
Дык ё
14.01.13
✎
10:39
|
добавь к условию
or Документы.Сотрудник is null |
|||
2
Ёпрст
14.01.13
✎
10:40
|
(0) ясен пень, ты вот этим:
WHERE $ПоследнееЗначение.Сотрудники.СостояниеФизЛица(Документы.Сотрудник,:ДатаАктуальности) превратил left join в inner join |
|||
3
Ёпрст
14.01.13
✎
10:41
|
всё собственно, дальше думай, нужно ли тебе оно именно так.
|
|||
4
HighFly
14.01.13
✎
10:57
|
(2) Спасибо! Исправил.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |