2016-12-21 3 views
0

У меня есть эта таблица:ссылка на поле за пределами подзапроса

enter image description here

И этот другой стол:

enter image description here

я оставил присоединиться вторую таблицу к первой:

select 
planningitems.costtype_id, 
costcentercode_id, 
fv.fix, 
fv.var 
from 
planningitems 
left join 
(select 
    fix, 
    var, 
    costtype_id, 
    costcenter_id 
from fixvar 
where 
    costcenter_id=10 or (costcenter_id=-1 and costtype_id not in (select costtype_id from fixvar where costcenter_id=10)) 
) as fv on fv.costtype_id=planningitems.costtype_id 

Он дает корр. ect, но я хотел бы сделать переменную costcenter_id. Я хочу сказать, я хочу заменить costcenter_id=10 на costcenter_id=planningitems.costcentercode_id.

Как это возможно?

Я использую firebird, но я думаю, что это обычная проблема с sql.

ответ

0

Я предполагаю, что это делает то, что вы хотите:

select pi.costtype_id, costcentercode_id, fv.fix, fv.var 
from planningitems pi left join 
    fixvar fv 
    on fv.costtype_id = pi.costtype_id and 
     (fv.costcenter_id = pi.costcenter_id or 
     fv.costcenter_id = -1 and 
     fv.costtype_id not in (select fv2.costtype_id from fixvar fv2 where fv2.costcenter_id = pi.costcenter_id) 
     ); 

Логика в запросе очень трудно следовать. Я уверен, что есть более простой способ сделать то, что вы хотите. Возможно, вам понадобится дополнительная информация о с образцовыми данными и желаемыми результатами.

+0

Это именно то, чего я хотел. Спасибо. – derstauner

Смежные вопросы