Имя: Пароль:
1C
 
Как написать запрос? сопоставить две таблицы
0 RomaH
 
naïve
25.08.16
11:48
Суть:
есть исходная таблица - услуги к выполнению
есть вторая таблица - услуги выполненные с датой

услуги в первой таблице могут дублироваться
вторая таблица заполняется по мере выполнения

задача - сопоставить две таблицы, что бы знать какая услуга когда выполнена (или пока еще не выполнена)

т.е. имеем
таблица 1:

УЗИ сосудов ноги (одной ноги - левой или правой)
УЗИ сосудов ноги
УЗИ почек

таблица 2:
УЗИ сосудов ноги 08:00
УЗИ сосудов ноги 12:00

в итоге получить:
УЗИ сосудов ноги 08:00
УЗИ сосудов ноги 12:00
УЗИ почек
1 Горогуля
 
25.08.16
11:49
правое соединение
2 RomaH
 
naïve
25.08.16
11:50
(1) а чего не левое? - ну как бы понятно что соединение - но с каким условием и сколько
3 Горогуля
 
25.08.16
11:52
одно. по номенклатуре
4 Это_mike
 
25.08.16
11:52
5 Garykom
 
гуру
25.08.16
11:53
(0) Если во 2-й таблице выполнили с датой, то чего нету в 1-й?
6 RomaH
 
naïve
25.08.16
12:01
(5) она не попадет в итог
7 RomaH
 
naïve
25.08.16
12:03
(3) и что в итоге получится
мне надо что бы первая строка получила время 8:00
а вторая 12:00
а если появится третья нога - то NULL
8 RomaH
 
naïve
25.08.16
12:03
при одном соединении я получу в итоге 4 записи
9 RomaH
 
naïve
25.08.16
12:06
соединить обе таблицы с числами - пронумеровать
и соединять по номеру
во - спасибо - вроде рабочая идея
10 RomaH
 
naïve
25.08.16
12:49
вот так:

ВЫБРАТЬ
    ЗаказПациентаМедицинскиеУслуги.НомерСтроки,
    ЗаказПациентаМедицинскиеУслуги.МедицинскаяУслуга,
    КОЛИЧЕСТВО(ЗаказПациентаМедицинскиеУслуги1.МедицинскаяУслуга) КАК МедицинскаяУслуга1
ПОМЕСТИТЬ втСтрокиЗаказа
ИЗ
    Документ.ЗаказПациента.МедицинскиеУслуги КАК ЗаказПациентаМедицинскиеУслуги
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПациента.МедицинскиеУслуги КАК ЗаказПациентаМедицинскиеУслуги1
        ПО ЗаказПациентаМедицинскиеУслуги.Ссылка = ЗаказПациентаМедицинскиеУслуги1.Ссылка
            И ЗаказПациентаМедицинскиеУслуги.МедицинскаяУслуга = ЗаказПациентаМедицинскиеУслуги1.МедицинскаяУслуга
            И ЗаказПациентаМедицинскиеУслуги.НомерСтроки >= ЗаказПациентаМедицинскиеУслуги1.НомерСтроки
ГДЕ
    ЗаказПациентаМедицинскиеУслуги.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
    ЗаказПациентаМедицинскиеУслуги.НомерСтроки,
    ЗаказПациентаМедицинскиеУслуги.МедицинскаяУслуга
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗаписьНаПрием.ДатаПриема,
    ЗаписьНаПрием.МедицинскаяУслуга,
    КОЛИЧЕСТВО(ЗаписьНаПрием1.МедицинскаяУслуга) КАК МедицинскаяУслуга1
ПОМЕСТИТЬ втСтрокиЯвок
ИЗ
    РегистрСведений.ЗаписьНаПрием КАК ЗаписьНаПрием
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаписьНаПрием КАК ЗаписьНаПрием1
        ПО ЗаписьНаПрием.МедицинскаяУслуга = ЗаписьНаПрием1.МедицинскаяУслуга
            И ЗаписьНаПрием.ЗаказПациента = ЗаписьНаПрием1.ЗаказПациента
            И (ЗаписьНаПрием.ЗаказПациента = &Ссылка)
            И ЗаписьНаПрием.ДатаПриема >= ЗаписьНаПрием1.ДатаПриема

СГРУППИРОВАТЬ ПО
    ЗаписьНаПрием.МедицинскаяУслуга,
    ЗаписьНаПрием.ДатаПриема
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втСтрокиЗаказа.НомерСтроки,
    втСтрокиЗаказа.МедицинскаяУслуга,
    втСтрокиЗаказа.МедицинскаяУслуга1,
    втСтрокиЯвок.ДатаПриема
ИЗ
    втСтрокиЗаказа КАК втСтрокиЗаказа
        ЛЕВОЕ СОЕДИНЕНИЕ втСтрокиЯвок КАК втСтрокиЯвок
        ПО втСтрокиЗаказа.МедицинскаяУслуга = втСтрокиЯвок.МедицинскаяУслуга
            И втСтрокиЗаказа.МедицинскаяУслуга1 = втСтрокиЯвок.МедицинскаяУслуга1
11 Это_mike
 
25.08.16
12:54
вы там за наркотики работаете, чтоль?