2015-08-04 4 views
0

Я работаю над проектом, который показывает HTML-документы, созданные из базы данных Firebird. В отдельных файлах у меня есть SQL-запросы. Как я могу получить данные из таблицы a или b в этом случае?Firebird выбрать данные из таблицы a или b

Например:

Declare varID int = __docid__; 

select fielda, fieldb AS fieldbv from 
if(varID = 10) then tableA; 
else tableB; 

ответ

1

Вы можете использовать хранимую процедуру с параметром varId. В этой процедуре получить значения из таблиц A и B, проверить параметр и вернуть желаемый результат. Что-то вроде:

if (:varId = 10) then 
    Select fieldA from tableA where ... into :OutParam; 
else 
    Select fieldB from tableB where ...into :OutParam; 
Suspend; 

Из вашего проекта просто вызвать эту процедуру с парами varId.

0

Попробуйте это:

select iif(varID = 10 ,fielda, fieldb) AS Value from then tableA left 
join tableB on tableA.id=tableB.id 
+0

Ответы только на код обескуражены на [так]. Пожалуйста, объясните немного, что происходит. Благодарю. –

+0

Я просто показать в нашем состоянии, если varid = 10 в простом запросе. Не в процедуре .. –

+0

Приятная идея, но может привести к серьезной ударе производительности, если таблицы большие (откуда вы взяли поле «id»?) – Fr0sT

0

Вы можете использовать EXECUTE STATEMENT для запуска полностью динамических запросов. Но если у вас есть только 2 варианта, ответ Вала достаточно хорош.

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