Имя: Пароль:
1C
 
Запрос на SQL Соединения
0 Hans
 
05.12.17
15:06
Проблема с соединениями в запросе на SQL. Не могу сделать внутреннее и два левых к внутреннему на SQL

Образец аналог SQL запроса на 1С:

"ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    НомДополнительныеРеквизиты.Свойство КАК Свойство
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НомДополнительныеРеквизиты
            ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ПВХ
            ПО НомДополнительныеРеквизиты.Свойство = ПВХ.Ссылка
            ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ПВХ2
            ПО НомДополнительныеРеквизиты.Свойство = ПВХ2.Ссылка
        ПО Номенклатура.Ссылка = НомДополнительныеРеквизиты.Ссылка"

Запрос на SQL:

SELECT
    Doc."Invoice-net" Invoice_net,
    Doc."Invoice-num" Invoice_num,
    RS.Date F_Date,
    RC.Num F_Num
        
FROM "ROUTE-NEWS" News
    INNER JOIN "INVOICE" Doc
        LEFT JOIN "REGSALE" RS
    ON Doc."Factura-net" = RS."regsale-net" AND Doc."Factura-num" = RS."regsale-num"
        LEFT JOIN "REGCOST" RC
    ON Doc."Factura-net" = RC."regcost-net" AND Doc."Factura-num" = RC."regcost-num"
    ON News.Net = Doc."Invoice-net"  AND News.Num= Doc."Invoice-num"

Ругается на последнюю строчку "ON News.Net = Doc."Invoice-net"  AND News.Num= Doc."Invoice-num""
[17:00:09] Error while executing SQL query on database 'RRR': near "ON": syntax error

Как сделать аналогичные соединения на SQL?
1 HEKPOH
 
05.12.17
15:12
(0) в профайлере глянь запрос из 1С и увидишь, что скуль не понимает вот таких соединений:
   ON Doc."Factura-net" = RC."regcost-net" AND Doc."Factura-num" = RC."regcost-num"
    ON News.Net = Doc."Invoice-net"  AND News.Num= Doc."Invoice-num"
потому как для второго ON не указана таблица
2 HEKPOH
 
05.12.17
15:12
+(1) он нарисует скулевские соедниения
3 art commander
 
05.12.17
15:38
(0) Используй временные таблицы.
4 Hans
 
05.12.17
15:41
Переделал уже запрос.
Сделал все соединения на одном уровне. В качестве главной таблицы взял INVOICE
5 HEKPOH
 
05.12.17
15:57
А я был неправ((( Вот скульный запрос:

SELECT
T1._IDRRef,
T2._Fld2170RRef
FROM dbo._Reference98 T1
INNER JOIN dbo._Reference98_VT2168 T2
LEFT OUTER JOIN dbo._Chrc809 T3
ON ((T2._Fld2170RRef = T3._IDRRef)) AND (T3._Fld817 = 0)
LEFT OUTER JOIN dbo._Chrc809 T4
ON ((T2._Fld2170RRef = T4._IDRRef)) AND (T4._Fld817 = 0)
ON (T1._IDRRef = T2._Reference98_IDRRef)
WHERE ((T1._Fld817 = 0)) AND (T2._Fld817 = 0)