Совсем запутался я в попытке оптимизации SQL запроса, поэтому прошу помощи
Вот этот запрос - правильно отрабатывает в саппорте
Код: Выделить всё
 select KATSOPR.NSOPR,
	   KATSOPR.DSOPR,
	   KATMC.NAME,
    SPORDER.KOL,
	   SPSOPR.PRICE,
    katorg2.name,
	   KATORG.NAME,
	   KATPARTY.NAME,
	   SKLORDER.NORDER,
	   KATPODR.NAME,
	   KATORG.ADDR
from KATSOPR,
     SPSOPR,
     KATORG,
     KATPARTY,
     SKLORDER,
     SPORDER,
     KATPODR,
     KATORG katorg2,
     KATMC
where
((
201 == KATSOPR.VIDSOPR and
KATSOPR.NREC == SPSOPR.CSOPR   and
KATSOPR.CORGBASE == KATORG.NREC and
SPSOPR.CMCUSL == KATMC.NREC and
1 == SPSOPR.PRMC and
SPSOPR.CPARTY == KATPARTY.NREC and
SPSOPR.NREC == SPORDER.CSPSOPR and
SPORDER.CSKLORDER == SKLORDER.NREC and
SKLORDER.CPODR == KATPODR.NREC  and
KATSOPR.CGRUZTO == katorg2.NREC
)); Код: Выделить всё
use Test_Rus
select t.F$NSOPR '№ накладной', 
	   t.F$DSOPR 'Дата накладной',
	   t6.F$NORDER '№ ордера',
	   t2.F$NAME 'Наименование товара',
	   t5.F$NAME  'Наименование партии',
	   t1.F$PRICE 'Цена за еденицу',
	   t4.F$KOL   'Кол-во отгруженного товара',
	   t31.F$NAME 'Наименование грузополучателя',
	   t31.F$ADDR 'адрес грузополучателя',
	   t3.F$NAME  'Наименование контрагента',
	   t7.F$NAME  'Название склада'
from T$SPSOPR as t1
	 INNER JOIN T$KATSOPR as t
	 ON t.F$NREC = t1.F$CSOPR
	 INNER JOIN T$KATMC as t2
	 ON t1.F$CMCUSL = t2.F$NREC
	 INNER JOIN T$SPORDER as t4
	 ON t1.F$NREC = t4.F$CSPSOPR
	 LEFT JOIN T$KATPARTY as t5
	 ON t1.F$CPARTY = t5.F$NREC
	 INNER JOIN T$SKLORDER as t6
	 ON t4.F$CSKLORDER = t6.F$NREC
	 INNER JOIN T$KATPODR as t7
	 ON t6.F$CPODR = t7.F$NREC,
     T$KATORG as t3
     INNER JOIN T$KATSOPR as tn
     ON tn.F$CORGBASE = t3.F$NREC,
     T$KATSOPR as tnn
     INNER JOIN T$KATORG as t31
     ON tnn.F$CGRUZTO = t31.F$NREC
where 201 = t.F$VIDSOPR and
      1 = t1.F$PRMC     Так же если подправить не оптимизированный запрос он также выводит неверные данные, тк есть записи у которых нет наименования партии и это нормально. В общем прошу помощи чтобы разобраться.

 Зачем выбирать данные, чтобы потом их удалять? Надо первый интерфейс делать менее подробным и цеплять остальные таблицы только при вызове второго. Посмотрите на интерфейс накладных в "Галактике": просто список с основными параметрами, а подробности можно увидеть, открыв нужный (а не все сразу) документ.
 Зачем выбирать данные, чтобы потом их удалять? Надо первый интерфейс делать менее подробным и цеплять остальные таблицы только при вызове второго. Посмотрите на интерфейс накладных в "Галактике": просто список с основными параметрами, а подробности можно увидеть, открыв нужный (а не все сразу) документ.