Вход | Регистрация
 

Непонятное поведение запроса

Непонятное поведение запроса
Я
   LivingStar
 
01.11.19 - 05:50
Запрос выбирает записи по снилс и фио, но в передаваемой таблице есть запись конец таблицы
и каким то образом эта запись выбирается в связке с некоторыми фио. Каким образом это и почему происходит?

    Запрос.Текст = "
        |ВЫБРАТЬ
        |    Таблица.Колонка1  КАК ФИОФизЛица,
        |    Таблица.Колонка2  КАК Рост,
        |    Таблица.Колонка3  КАК РазмерОдежды,
        |    Таблица.Колонка4  КАК РазмерОбуви,
        |    Таблица.Колонка5  КАК РазмерГоловногоУбора,
        |    Таблица.Колонка6  КАК РазмерПротивогаза,
        |    Таблица.Колонка7  КАК РазмерРеспиратора,
        |    Таблица.Колонка8  КАК РазмерПерчаток,
        |    Таблица.Колонка9  КАК РазмерРукавиц,
        |    Таблица.Колонка10 КАК СНИЛС
        |ПОМЕСТИТЬ ВТ_АнтропометрическиеСведения
        |ИЗ
        |    &Таблица КАК Таблица
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ФизическиеЛица.Ссылка                                КАК ФизическоеЛицоСсылка,
        |    ФизическиеЛица.Фамилия                                КАК Фамилия,
        |    ФизическиеЛица.Имя                                    КАК Имя,
        |    ФизическиеЛица.Отчество                            КАК Отчество,
        |    ФизическиеЛица.ФИО                                    КАК ФИО,
        |    ФизическиеЛица.СтраховойНомерПФР                   КАК СтраховойНомерПФР,
        |    ВТ_АнтропометрическиеСведения.ФИОФизЛица            КАК ФИОФизЛица,
        |    ВТ_АнтропометрическиеСведения.Рост                    КАК Рост,
        |    ВТ_АнтропометрическиеСведения.РазмерОдежды            КАК РазмерОдежды,
        |    ВТ_АнтропометрическиеСведения.РазмерОбуви            КАК РазмерОбуви,
        |    ВТ_АнтропометрическиеСведения.РазмерГоловногоУбора КАК РазмерГоловногоУбора,
        |    ВТ_АнтропометрическиеСведения.РазмерПротивогаза    КАК РазмерПротивогаза,
        |    ВТ_АнтропометрическиеСведения.РазмерРеспиратора    КАК РазмерРеспиратора,
        |    ВТ_АнтропометрическиеСведения.РазмерПерчаток       КАК РазмерПерчаток,
        |    ВТ_АнтропометрическиеСведения.РазмерРукавиц        КАК РазмерРукавиц,
        |    ВТ_АнтропометрическиеСведения.СНИЛС                КАК СНИЛС
        |ИЗ
        |    ВТ_АнтропометрическиеСведения КАК ВТ_АнтропометрическиеСведения
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
        |        ПО (ФизическиеЛица.СтраховойНомерПФР = ВТ_АнтропометрическиеСведения.СНИЛС
        |            ИЛИ ВТ_АнтропометрическиеСведения.ФИОФизЛица = ФизическиеЛица.ФИО)";
    Запрос.УстановитьПараметр("Таблица", ТаблицаРезультат);
 
 
   LivingStar
 
1 - 01.11.19 - 05:59
Если удалить эту запись, вроде как нормально идет все. Но что это за коллизия из за этой записи?
    ТаблицаРезультат.Удалить(ТаблицаРезультат.Найти("Конец таблицы", "Колонка1"));
    //

    Запрос       = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Таблица.Колонка1 КАК ФИОФизЛица,
                   |    Таблица.Колонка2 КАК Рост,
                   |    Таблица.Колонка3 КАК РазмерОдежды,
                   |    Таблица.Колонка4 КАК РазмерОбуви,
                   |    Таблица.Колонка5 КАК РазмерГоловногоУбора,
                   |    Таблица.Колонка6 КАК РазмерПротивогаза,
                   |    Таблица.Колонка7 КАК РазмерРеспиратора,
                   |    Таблица.Колонка8 КАК РазмерПерчаток,
                   |    Таблица.Колонка9 КАК РазмерРукавиц,
                   |    Таблица.Колонка10 КАК СНИЛС
                   |ПОМЕСТИТЬ ВТ_АнтропометрическиеСведения
                   |ИЗ
                   |    &Таблица КАК Таблица
                   |;
                   |
                   ////////////////////////////////////////////////////////////////////////////////

                   |ВЫБРАТЬ
                   |    ФизическиеЛица.Ссылка КАК ФизическоеЛицоСсылка,
                   |    ФизическиеЛица.Фамилия КАК Фамилия,
                   |    ФизическиеЛица.Имя КАК Имя,
                   |    ФизическиеЛица.Отчество КАК Отчество,
                   |    ФизическиеЛица.ФИО КАК ФИО,
                   |    ФизическиеЛица.СтраховойНомерПФР КАК СтраховойНомерПФР,
                   |    ВТ_АнтропометрическиеСведения.ФИОФизЛица КАК ФИОФизЛица,
                   |    ВТ_АнтропометрическиеСведения.Рост КАК Рост,
                   |    ВТ_АнтропометрическиеСведения.РазмерОдежды КАК РазмерОдежды,
                   |    ВТ_АнтропометрическиеСведения.РазмерОбуви КАК РазмерОбуви,
                   |    ВТ_АнтропометрическиеСведения.РазмерГоловногоУбора КАК РазмерГоловногоУбора,
                   |    ВТ_АнтропометрическиеСведения.РазмерПротивогаза КАК РазмерПротивогаза,
                   |    ВТ_АнтропометрическиеСведения.РазмерРеспиратора КАК РазмерРеспиратора,
                   |    ВТ_АнтропометрическиеСведения.РазмерПерчаток КАК РазмерПерчаток,
                   |    ВТ_АнтропометрическиеСведения.РазмерРукавиц КАК РазмерРукавиц,
                   |    ВТ_АнтропометрическиеСведения.СНИЛС КАК СНИЛС
                   |ИЗ
                   |    ВТ_АнтропометрическиеСведения КАК ВТ_АнтропометрическиеСведения
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
                   |        ПО (ФизическиеЛица.СтраховойНомерПФР = ВТ_АнтропометрическиеСведения.СНИЛС
                   |                ИЛИ ВТ_АнтропометрическиеСведения.ФИОФизЛица = ФизическиеЛица.ФИО)";
    Запрос.УстановитьПараметр("Таблица", ТаблицаРезультат);
   DrZombi
 
2 - 01.11.19 - 06:05
(0) Ошибка в:
        1. ВТ_АнтропометрическиеСведения - Содержат дубли
        2. ФизическиеЛица - содержать дубли.

...Всегда пожалуйста :)
   DrZombi
 
3 - 01.11.19 - 06:06
+ Дубли, в плане связок "СНИЛС" - "СтраховойНомерПФР"
                        "ФИО" - "ФИОФизЛица"
   DrZombi
 
4 - 01.11.19 - 06:07
+ Ты пойми, не у всех может быть указан снилс, фио.
   DrZombi
 
5 - 01.11.19 - 06:07
Как вариант, удалить последнюю строку.
   LivingStar
 
6 - 01.11.19 - 06:11
(5) Строку удалил. Дублей нет. Но вот так почему то криво выбиралось (
   DrZombi
 
7 - 01.11.19 - 06:17
(6) Да у вас там условие "или"

ФизическиеЛица.СтраховойНомерПФР = ВТ_АнтропометрическиеСведения.СНИЛС
        |            ИЛИ ВТ_АнтропометрическиеСведения.ФИОФизЛица = ФизическиеЛица.ФИО

...
Если результат странный, значит у вас там есть такой набор данных, который удовлетворяет связи.
По пустому полю тоже связывает ;)
   DrZombi
 
8 - 01.11.19 - 06:17
+ Криво пишешь, криво связывает...
   LivingStar
 
9 - 01.11.19 - 06:24
(8) А что криво? Если мне нужно проверять по снилс или по физ лицу.
(7) ну так условие не выполняется, почему выборка идет не правильных данных?
   catena
 
10 - 01.11.19 - 06:25
(9)У тебя твоя таблица - основная, почему он не должен выбирать из нее все, что есть? Это левая таблица присоединяется по условиям связи, правая таблица присутствует в выборке полностью всегда.
   LivingStar
 
11 - 01.11.19 - 06:27
(10 ) я поменял связь
    ТаблицаРезультат.Удалить(ТаблицаРезультат.Найти("Конец таблицы", "Колонка1"));
    //

    Запрос       = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Таблица.Колонка1 КАК ФИОФизЛица,
                   |    Таблица.Колонка2 КАК Рост,
                   |    Таблица.Колонка3 КАК РазмерОдежды,
                   |    Таблица.Колонка4 КАК РазмерОбуви,
                   |    Таблица.Колонка5 КАК РазмерГоловногоУбора,
                   |    Таблица.Колонка6 КАК РазмерПротивогаза,
                   |    Таблица.Колонка7 КАК РазмерРеспиратора,
                   |    Таблица.Колонка8 КАК РазмерПерчаток,
                   |    Таблица.Колонка9 КАК РазмерРукавиц,
                   |    Таблица.Колонка10 КАК СНИЛС
                   |ПОМЕСТИТЬ ВТ_АнтропометрическиеСведения
                   |ИЗ
                   |    &Таблица КАК Таблица
                   |;
                   |
                   ////////////////////////////////////////////////////////////////////////////////

                   |ВЫБРАТЬ
                   |    ФизическиеЛица.Ссылка КАК ФизическоеЛицоСсылка,
                   |    ФизическиеЛица.Фамилия КАК Фамилия,
                   |    ФизическиеЛица.Имя КАК Имя,
                   |    ФизическиеЛица.Отчество КАК Отчество,
                   |    ФизическиеЛица.ФИО КАК ФИО,
                   |    ФизическиеЛица.СтраховойНомерПФР КАК СтраховойНомерПФР,
                   |    ВТ_АнтропометрическиеСведения.ФИОФизЛица КАК ФИОФизЛица,
                   |    ВТ_АнтропометрическиеСведения.Рост КАК Рост,
                   |    ВТ_АнтропометрическиеСведения.РазмерОдежды КАК РазмерОдежды,
                   |    ВТ_АнтропометрическиеСведения.РазмерОбуви КАК РазмерОбуви,
                   |    ВТ_АнтропометрическиеСведения.РазмерГоловногоУбора КАК РазмерГоловногоУбора,
                   |    ВТ_АнтропометрическиеСведения.РазмерПротивогаза КАК РазмерПротивогаза,
                   |    ВТ_АнтропометрическиеСведения.РазмерРеспиратора КАК РазмерРеспиратора,
                   |    ВТ_АнтропометрическиеСведения.РазмерПерчаток КАК РазмерПерчаток,
                   |    ВТ_АнтропометрическиеСведения.РазмерРукавиц КАК РазмерРукавиц,
                   |    ВТ_АнтропометрическиеСведения.СНИЛС КАК СНИЛС
                   |ИЗ
                   |    ВТ_АнтропометрическиеСведения КАК ВТ_АнтропометрическиеСведения
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
                   |        ПО (ФизическиеЛица.СтраховойНомерПФР = ВТ_АнтропометрическиеСведения.СНИЛС
                   |                ИЛИ ВТ_АнтропометрическиеСведения.ФИОФизЛица = ФизическиеЛица.ФИО)";
    Запрос.УстановитьПараметр("Таблица", ТаблицаРезультат);
   LivingStar
 
12 - 01.11.19 - 06:32
(11) почему этот запрос не выбирает правильно данные?
   shadow_sw
 
13 - 01.11.19 - 06:40
(12)  ответ в (2)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.