2017-02-21 18 views
1

У меня есть следующая структура таблицы. На основе того, какой тип запроса приходит, я должен иметь возможность выбрать правильный столбец для сопоставления значения.Есть ли способ, которым я могу обладать функциональностью, например if-else, где условие

| resource_id | result | request   | 
|    | 15127 | /campaign/add | 
| 15127  |  | /campaign/modify | 

Для например:

если запрос как /campaign/add, то результат должен быть по сравнению с числом посылается пользователем еще resource_id должен быть выбран.

Программным Я могу сказать,

if(request.equals()) 
    fetch values from database where resource_id = 15127 
else 
    fetch values from database where resource_id = 15127 

Теперь мне нужно сделать то же самое с использованием базы данных.

+1

случай ... когда ... то ... еще ... конец? –

ответ

4

Вы можете использовать выражение CASE, чтобы сделать это:

select * 
from the_table 
where case 
     when request = '/campaign/add' then result 
     when request = '/campaign/modify' then resource_id 
     end = number_sent_by_the_user 
4

Это то, что вы хотите?

where (request like '/campaign/add%' and result = $user_Input) or 
     (request like '/campaign/modify%' and resource_id = $user_Input)