Конференция "Базы" » применение full join [firebird 1_5]
 
  • turbouser___ (28.07.09 14:34) [20]

    > _drug_

    А так?
    select i.ITEM_ID item_id ,
    sum(case WHEN pt.id=1 then pc.amount*o.cost ELSE 0 end) AS cost1,
    sum(case WHEN pt.id=2 then pc.amount*o.cost ELSE 0 end) AS cost2,
    sum(case WHEN pt.id=3 then pc.amount*o.cost ELSE 0 end) AS cost3,
    sum(case WHEN pt.id=4 then pc.amount*o.cost ELSE 0 end) AS cost4
    from titem i
       , toperations o
       , tproc_list pl
       , tproc_type pt
       , tproc_content pc
    where pl.item_id = i.item_id --связываем список процедур со списком предметов
     and pl.procedure_id = pc.proc_id --связываем список процедур с их содержанием
     and o.id = pc.operation_id --связываем содержание процедур с операциями
     and pt.id = pc.proc_type --связываем тип процедуры с содержанием (здесь ошибка в структуре)
     and pc.proc_type = 1 --выбираем жестко прошитый тип процедуры
    group by i.item_id; группируем, чтобы подсчитать сумму

  • _drug_ (28.07.09 15:30) [21]

    > если уж связывать, то TITEM, TPROC_LIST и TOPERATIONS для
    > расчета COST по TOPERATIONS.COST

    Совершенно верно.


    > turbouser___  

    если только убрать привязку к proc_type:
    ...and pc.proc_type = 1...


    работает! и ХП не надо и ресурсов потребляет намного меньше, еще индекс настрою и вообще будет хрошо. век живи, век учись. а ведь просто все ))) Благодарю!
 
Конференция "Базы" » применение full join [firebird 1_5]
Есть новые Нет новых   [134473   +33][b:0][p:0.001]