![]() |
|
Левое соединение с вложенным запросом. Не пойму, как работает... | ☑ | ||
---|---|---|---|---|
0
bvn-2005
19.12.19
✎
15:30
|
ТАкой запрос:
ВЫБРАТЬ Сотрудники.Код КАК Код, Сотрудники.Наименование КАК Наименование, ВложенныйЗапрос.ВидОбразования КАК ВидОбразования, ВложенныйЗапрос.УчебноеЗаведение КАК УчебноеЗаведение ИЗ Справочник.Сотрудники КАК Сотрудники ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1 ОбразованиеФизическихЛиц.Владелец КАК Владелец, ОбразованиеФизическихЛиц.ВидОбразования КАК ВидОбразования, ОбразованиеФизическихЛиц.УчебноеЗаведение КАК УчебноеЗаведение, ОбразованиеФизическихЛиц.Ссылка КАК Ссылка ИЗ Справочник.ОбразованиеФизическихЛиц КАК ОбразованиеФизическихЛиц УПОРЯДОЧИТЬ ПО Ссылка) КАК ВложенныйЗапрос ПО Сотрудники.ФизическоеЛицо.Ссылка = ВложенныйЗапрос.Владелец.Ссылка ГДЕ Сотрудники.Код = &Код Для одного сотрудника все нормально, а для другого возвращает ВидОбразования и УчебноеЗаведение NULL. Хотя данные точно есть... |
|||
1
dka80
19.12.19
✎
15:31
|
ВЫБРАТЬ ПЕРВЫЕ 1 - вернет какую-то одну случайную запись из базы, вообще никак не связанную с основным запросом
|
|||
2
pechkin
19.12.19
✎
15:31
|
где то во вложенном запросе пропущен фильтр по физлицу
|
|||
3
Широкий
19.12.19
✎
15:32
|
С чего ты решил что первая запись во вложенном это именно твой сотрудник :)
|
|||
4
pechkin
19.12.19
✎
15:32
|
(2) хотя нет - код вообще полное г.
|
|||
5
lodger
19.12.19
✎
15:33
|
(1) видимо, там есть люди с более чем 1 образованием и список двоился.
решили через "Первые 1". неправильно. |
|||
6
bvn-2005
19.12.19
✎
15:36
|
"видимо, там есть люди с более чем 1 образованием и список двоился"
Именно так. А как правильно? |
|||
7
dka80
19.12.19
✎
15:37
|
(6) разные способы есть. Например, можешь Группировки использовать, если приоритет не важен.
|
|||
8
kda26
19.12.19
✎
15:40
|
левое соединение с условием становиться внутренним соединением
|
|||
9
Престарелый Заяц
19.12.19
✎
15:41
|
(1) С чего ты взял, что он вернет случайную запись???
|
|||
10
dka80
19.12.19
✎
15:45
|
(9) ты можешь гарантировать, что сейчас тебе вернулось Номенклатура1 и через час или через день вернется также Номенклатура1?
|
|||
11
НЕА123
19.12.19
✎
15:48
|
ВЫБРАТЬ ПЕРВЫЕ 1
Сотрудники.Код КАК Код, Сотрудники.Наименование КАК Наименование, ОбразованиеФизическихЛиц .ВидОбразования КАК ВидОбразования, ОбразованиеФизическихЛиц .УчебноеЗаведение КАК УчебноеЗаведение ИЗ Справочник.Сотрудники КАК Сотрудники ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОбразованиеФизическихЛиц КАК ОбразованиеФизическихЛиц ПО Сотрудники.ФизическоеЛицо.Ссылка = ОбразованиеФизическихЛиц .Владелец.Ссылка ГДЕ Сотрудники.Код = &Код |
|||
12
НЕА123
19.12.19
✎
15:49
|
*
.Ссылка убрать. |
|||
13
Престарелый Заяц
19.12.19
✎
15:59
|
(10) А кто может такое гарантировать если данные меняются? В подзапросе ВСЕГДА вернется первая ссылка, согласно правил сортировки ссылок, при чем тут номенклатура вообще?
|
|||
14
aleks_default
19.12.19
✎
16:03
|
Внутри вложенного запроса нужно просто сделать фильтр по физлицу
|
|||
15
НЕА123
19.12.19
✎
16:05
|
(14)
+ его только и оставить безо всяких там СОЕДИНЕНИЕ. |
|||
16
aleks_default
19.12.19
✎
16:06
|
Но ито таким образом вы просто получите то образование, которое было заведено для этого сотрудника раньше всех
|
|||
17
aleks_default
19.12.19
✎
16:07
|
(15)+1
|
|||
18
aleks_default
19.12.19
✎
16:10
|
(16) Имеется ввиду, если у одного сотрудника заведено несколько образований, т. е. несколько элементов справочника Образования физ лиц, то вы получите таким образом тот элемент из них, который был создан первым
|
|||
19
dot05
19.12.19
✎
16:13
|
божечки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |