У меня есть забавный запрос MySQL, который должен извлечь подзапрос из другой таблицы, мне интересно, возможно ли вообще получить mysql для оценки подзапроса.
пример: (мне пришлось заменить несколькоскобки с «gte» и «lte», потому что они испортили формат записи)
select a.id,a.alloyname,a.label,a.symbol, g.grade,
if(a.id = 1,(
(((select avg(cost/2204.6) as averageCost from nas_cost where cost != '0' and `date` lte '2011-03-01' and `date` gte '2011-03-31') - t.value) * (astm.astm/100) * 1.2)
),(a.formulae)) as thisValue
from nas_alloys a
left join nas_triggers t on t.alloyid = a.id
left join nas_astm astm on astm.alloyid = a.id
left join nas_estimatedprice ep on ep.alloyid = a.id
left join nas_grades g on g.id = astm.gradeid
where a.id = '1' or a.id = '2'
order by g.grade;
Так, когда оператор IF не равен = 1, тогда (a.formulae) является значением вТаблица nas_alloys:
((ep.estPrice - t.value) * (astm.astm/100) * 0.012)
По сути, я хочу, чтобы этот запрос выполнялся как:
select a.id,a.alloyname,a.label,a.symbol, g.grade,
if(a.id = 1,(
(((select avg(cost/2204.6) as averageCost from nas_cost where cost != '0' and `date` gte '2011-03-01' and `date` lte '2011-03-31') - t.value) * (astm.astm/100) * 1.2)
),((ep.estPrice - t.value) * (astm.astm/100) * 0.012)) as thisValue
from nas_alloys a
left join nas_triggers t on t.alloyid = a.id
left join nas_astm astm on astm.alloyid = a.id
left join nas_estimatedprice ep on ep.alloyid = a.id
left join nas_grades g on g.id = astm.gradeid
where a.id = '1' or a.id = '2'
order by g.grade;
Когда a.id! = '1', кстати, существует около 30 различных возможностейдля a.formulae, и они часто меняются, так что жесткие удары по множеству, если операторы на самом деле не вариант.[переработка бизнес-логики более вероятна, чем это!]
В любом случае, есть мысли?Будет ли это вообще работать?
- спасибо -sean