2014-11-13 2 views
1

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

Некоторые фрилансеры не имеют за час, вместо этого в день или за рабочий тип.

Мой первоначальный запрос (LEFT OUTER), соединяющий таблицу фрилансеров с таблицей freelancer_workrates и фильтрацией строк на основе perhrrate. Всякий раз, когда perhrrate недоступен, я хотел бы получить их следующий доступный курс, используя тот же запрос. Это возможно?

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

Есть ли предложения?

+0

ли вы имеете в виду [ 'IFNULL()'] (http://dev.mysql.com/doc /refman/5.6/en/control-flow-functions.html#function_ifnull)? – tadman

+0

И если функции 'IFNULL()' и 'COALESCE()' не помогают вашей ситуации (нет предоставленного примера запроса, мы не можем предоставить фактическое решение, только совет), вы можете попробовать 'UNION' собрать вместе в противном случае отдельные запросы в один. – Turophile

ответ

1

Использование coalesce

Это будет выбрать первое значение не является NULL из трех скоростей

Coalesce(perHrRate, perDayRate, perWorkTypeRate) 
Смежные вопросы