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