|
Запрос. Полное соединение. Не берет все нужные документы. |
☑ |
0
ЗлаяЗая
17.06.19
✎
08:53
|
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| Док1.Сотрудник,
| Док1.Ссылка.Подразделение,
| Док1.Ссылка.Смена,
| Док1.Тариф,
| Док1.ВремяПлан,
| Док1.ПланФОТ,
| Док2.ВремяФакт,
| Док2.ФактФОТ
|ИЗ
| Документ.Док1 КАК Док1
| ПОЛНОЕ СОЕДИНЕНИЕ Документ.Док2 КАК Док2
| ПО Док1.Смена = Док2.Смена
| И Док1.Сотрудник = Док2.Сотрудник
|ГДЕ
| Док1.Проведен = ИСТИНА
| И Док1.Дата МЕЖДУ &Дата1 И &Дата2
| И Док1.Подразделение = &Подразделение
| И Док2.Проведен = ИСТИНА
| И Док2.Дата МЕЖДУ &Дата1 И &Дата2
| И Док2.Подразделение = &Подразделение";
Если нет документа Док2, то данные Док1 тоже не попадают в результат.
|
|
1
garantNo4x
17.06.19
✎
08:57
|
Ну зато условие выполняется
|
|
2
ЗлаяЗая
17.06.19
✎
08:59
|
а как сделать?
делать 2 запроса и объединять?
|
|
3
тарам пам пам
17.06.19
✎
09:02
|
Условие из "где" перенеси в "по" - потому что "где" выполняется условно говоря после соединения. Т. е.
ПО Док1.Смена = Док2.Смена
И Док1.Сотрудник = Док2.Сотрудник
И Док1.Проведен = ИСТИНА
и так далее
|
|
4
PuhUfa
17.06.19
✎
09:02
|
(2) Исправить условия
|
|
5
ЗлаяЗая
17.06.19
✎
09:17
|
| Документ.Док1 КАК Док1
| ПОЛНОЕ СОЕДИНЕНИЕ Документ.Док2 КАК Док2
| ПО Док1.Смена = Док2.Смена
| И Док1.Сотрудник = Док2.Сотрудник
| И Док1.Подразделение = Док2.Подразделение
| И (Док2.Проведен = ИСТИНА)
| И (Док1.Проведен = ИСТИНА)
| И (Док2.Дата МЕЖДУ &Дата1 И &Дата2)
| И (Док1.Дата МЕЖДУ &Дата1 И &Дата2)
| И (Док2.Подразделение = &Подразделение)
| И (Док1.Подразделение = &Подразделение)";
|
|
6
ЗлаяЗая
17.06.19
✎
09:17
|
не помогло
|
|
7
Широкий
17.06.19
✎
09:57
|
| Док1.Проведен = ИСТИНА
| И Док1.Дата МЕЖДУ &Дата1 И &Дата2
| И Док1.Подразделение = &Подразделение
| И Док2.Проведен = ИСТИНА
| И Док2.Дата МЕЖДУ &Дата1 И &Дата2
| И Док2.Подразделение = &Подразделение";
Ты этим условием во внутреннее соединение превращаешь
|
|
8
unf13
17.06.19
✎
10:26
|
на вскидку:
"ГДЕ
ВЫБОР КОГДА Док1.Проведен ЕСТЬ NULL ТОГДА ИСТИНА ИНАЧЕ Док1.Проведен КОНЕЦ
И ВЫБОР КОГДА Док2.Проведен ЕСТЬ NULL ТОГДА ИСТИНА ИНАЧЕ Док2.Проведен КОНЕЦ
И ..."
|
|
9
Simod
17.06.19
✎
10:39
|
(0) Использование "И" для всех условий в секции "ГДЕ" делает обязательным наличие обоих документов (Док1, Док2), т.е. ПОЛНОЕ СОЕДИНЕНИЕ превращается во ВНУТРЕННЕЕ.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший