Страница 1 из 1

Как связать накладные на отгрузку и накладные на возврат?

Добавлено: 24 янв 2012, 14:00
denisag
Пробовал через SPSOPR.CSPORDER = SPORDER.CSPORDV
Но надо наверное еще что то учесть потому что если так связаться в таком скрипте:

Код: Выделить всё

use Test_Rus
select SET1.[№ накладной],
       SET1.[Дата накладной],
       SET1.[Наименование товара], 
       SET1.[Цена за еденицу], 
       SET1.[Наименование грузополучателя], 
       SET1.[Наименование партии],
       SET1.[№ ордера],
       SET1.[Название склада],
       SET1.[адрес грузополучателя],
       SET1.[Кол-во отгруженного товара],
       SET2.[Кол-во возвращаемого товара],
       SET1.[Наименование контрагента]
from
(select
T$KATSOPR.F$NSOPR '№ накладной',
T$KATSOPR.F$DSOPR 'Дата накладной',
T$KATMC.F$NAME 'Наименование товара',
T$SPSOPR.F$PRICE 'Цена за еденицу',
katorg2.F$name 'Наименование грузополучателя',
T$KATPARTY.F$NAME 'Наименование партии',
T$SKLORDER.F$NORDER '№ ордера',
T$KATPODR.F$NAME 'Название склада',
KATORG2.F$ADDR 'адрес грузополучателя',
T$SPORDER.F$KOL 'Кол-во отгруженного товара',
KATORG1.F$NAME 'Наименование контрагента',
T$SPSOPR.F$CSPORDER
from
T$KATSOPR
INNER JOIN T$SPSOPR on T$KATSOPR.F$NREC = T$SPSOPR.F$CSOPR and 1 = T$SPSOPR.F$PRMC
INNER JOIN T$SKLORDER on T$KATSOPR.F$NREC = T$SKLORDER.F$CSOPR
INNER JOIN T$SPORDER on T$SPORDER.F$CSPSOPR = T$SPSOPR.F$NREC
LEFT OUTER JOIN T$KATORG as KATORG1 on T$KATSOPR.F$CORGBASE = KATORG1.F$NREC
LEFT OUTER JOIN T$KATORG as KATORG2 on T$KATSOPR.F$CGRUZTO = katorg2.F$NREC
LEFT OUTER JOIN T$KATMC on T$SPORDER.F$CMC = T$KATMC.F$NREC
LEFT OUTER JOIN T$KATPARTY on T$SPORDER.F$CPARTY = T$KATPARTY.F$NREC
LEFT OUTER JOIN T$KATPODR on T$SPORDER.F$CCPODR = T$KATPODR.F$NREC
where
201 = T$KATSOPR.F$VIDSOPR ) as SET1
LEFT OUTER JOIN 
(select
--T$KATMC.F$NAME 'Наименование товара',
--katorg2.F$name 'Наименование грузополучателя',
--KATORG1.F$NAME 'Наименование контрагента',
--T$SPSOPR.F$CSPORDER,
T$SPORDER.F$CSPORDV,
SUM (T$SPORDER.F$KOL)'Кол-во возвращаемого товара'
from
T$KATSOPR
INNER JOIN T$SPSOPR on T$KATSOPR.F$NREC = T$SPSOPR.F$CSOPR and 1 = T$SPSOPR.F$PRMC
INNER JOIN T$SKLORDER on T$KATSOPR.F$NREC = T$SKLORDER.F$CSOPR
INNER JOIN T$SPORDER on T$SPORDER.F$CSPSOPR = T$SPSOPR.F$NREC
LEFT OUTER JOIN T$KATORG as KATORG1 on T$KATSOPR.F$CORGBASE = KATORG1.F$NREC
LEFT OUTER JOIN T$KATORG as KATORG2 on T$KATSOPR.F$CGRUZTO = katorg2.F$NREC
LEFT OUTER JOIN T$KATMC on T$SPORDER.F$CMC = T$KATMC.F$NREC			
LEFT OUTER JOIN T$KATPARTY on T$SPORDER.F$CPARTY = T$KATPARTY.F$NREC
LEFT OUTER JOIN T$KATPODR on T$SPORDER.F$CCPODR = T$KATPODR.F$NREC
where
106 = T$KATSOPR.F$VIDSOPR
group by T$KATMC.F$NAME, KATORG1.F$NAME, katorg2.F$name, T$SPSOPR.F$CSPORDER, T$SPORDER.F$CSPORDV) as SET2
ON SET1.F$CSPORDER = SET2.F$CSPORDV
то получим в строках SET2.[Кол-во возвращаемого товара] NULL так как первый вложенный запрос возвращает пустое значение и если там добавить вывод SPSOPR.CSPORDER, и если добавить вывод SPORDER.CSPORDV. Во втором вложенном запросе они возвращают не пустые значения


РАЗОБРАЛСЯ - ВЯЗАТЬ НАДО ТАК T$SPORDER.F$NREC = T$SPSOPR.F$CSPORDER