2016-12-28 12 views
0

вот мой запросMySQL столбец изменения для фильтра

select op.*,o.customers_name from orders_payment op, ".TABLE_ORDERS. " o where op.orders_id=o.orders_id AND 
o.customers_id='".$customers['customers_id']."' 
AND op.confirm_payment='1' 
AND (received_date BETWEEN '".$fromdate."' AND '".$todate."') order by pay_id desc 

, что я хочу изменить в это «payment_date'column фильтр. Если этот столбец пуст, замените его на «payment_date», оставаясь таким же. Я пробовал оператор switch, но не получил никакого успеха. заранее спасибо

ответ

2

Один метод использует case:

((received_date BETWEEN (case when '".$fromdate."' = '' then pament_date else '".$fromdate."' end) AND '".$todate."') or 
(payment_date BETWEEN (case when '".$fromdate."' = '' then pament_date else '".$fromdate."' end) AND '".$todate."') 
) 

По пути, я бы настоятельно рекомендуем вам использовать параметры в диапазоне, чем munging строку SQL. По крайней мере, вы могли бы пройти в NULL и использовать coalesce(), а не case.

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

  • Нет связанных вопросов^_^