Ginge sowas?
SQL-Code:
select * from tabelle where id = ((:condition and (id = 1))
union all
select * from tabelle where id = (not :condition and (id = 20))
Ich hab meine optimale Lösung mit UNION hinbekommen, mit der nur die erforderlichen Reads gemacht werden.
Danke für den Hinweis mit UNION, hatte das irgendwie außer acht gelassen da ich irgendwie davon ausgegangen bin das es mit dem UNION noch umständlicher für Firebird wäre.
Code:
select T1.ID as T1_ID,
T2.ID as T2_ID,
T3.WERT
from TABELLE1 T1
cross join TABELLE2 T2
inner join TABELLE3 T3 on T3.T1_ID = T1.ID and
T1."GLOBAL" and
T3.T2_ID = ( select T2_TEMP.ID
from TABELLE2 T2_TEMP
where T2_TEMP.MAIN)
union
select T1.ID as T1_ID,
T3.T2_ID,
T3.WERT
from TABELLE1 T1
inner join TABELLE3 T3 on T3.T1_ID = T1.ID and
not T1."GLOBAL"