....
.....
if ($prod_price->RecordCount()>0) {
$p_price = $prod_price->fields['options_values_price'];
}
else
{
$p_price = $orders_products_query->fields['products_price'];
}
$p_price = ($p_price>0)?$p_price:$orders_products_query->fields['final_price'];
......
..........
Как вы можете догадаться из вышеизложенного, я запускаю два разных запроса и проверяю 3 поля, чтобы определить переменную $ p_price в PHP. Я хочу сконденсировать это в одном запросе, при условии, что: Если поле1 равно Null, используйте поле2, если поле2 равно 0, используйте поле 3.Как сделать эту тройную операцию в mysql?
Первая часть может быть решена с помощью IFNULL (field1, field2). ... но что мне делать со второй частью? Должен ли я использовать случай? Мне нужно самое эффективное решение с точки зрения скорости выполнения, потому что это часть чрезвычайно большого запроса.
EDIT:
Так как кажется, вопрос не ясно, что некоторые из вас, возьмите это в качестве альтернативы.
IF(IFNULL(field1,field2)>0,IFNULL(field1,field2),field3)
выше MySQL условие запроса работает с указанной выше логики, но, как вы можете видеть, он оценивает field1 и FIELD2 дважды для проверки NULL, что я не верю, является очень эффективным, так что я ищу с лучший запрос/условие, чтобы переписать то же самое.
Лучший способ узнать это, попробовав его на большом наборе данных и сделайте несколько эталонных тестов. – mzedeler
где находится 'mysql' часть ?? – Nauphal
'mysql part' в основном я прошу наилучшего способа переписать это в запросе mysql:' IF (IFNULL (field1, field2)> 0, IFNULL (field1, field2), field3) ' – Bluemagica