ThingEngineer / PHP-MySQLi-Database-Class

Wrapper for a PHP MySQL class, which utilizes MySQLi and prepared statements.
Other
3.29k stars 1.35k forks source link

How I can use case condition with order by statement. #888

Closed vikramsingh86 closed 4 years ago

vikramsingh86 commented 4 years ago

I am trying to fetch records by ordering them according to different fields. I need to use case clause with in order by statement. How I can use it. Please suggest.

darkcavalry commented 4 years ago

you can use multiple orderBy in your query.

$rs = $db->orderBy('user_name','ASC')->orderBy('user_created','DESC')->get('users');

vikramsingh86 commented 4 years ago

Hi @darkcavalry ,

Thanks for your answer. Actually I want to use CASE WHEN statement in ORDER BY clause. For example: ORDER BY CASE WHEN Column1 <> 0 THEN Column1 DESC ELSE ASC END

darkcavalry commented 4 years ago

Hi,

You can use Case statement in orderBy as same way.

$rs = $db->orderBy('(CASE WHEN Column1 <> 0 THEN Column1 END)','DESC')
                ->orderBy('(CASE WHEN Column1 = 0 THEN Column1 END)','ASC')
                ->get('users');
vikramsingh86 commented 4 years ago

Hi @darkcavalry ,

Thanks for your quick reply. It works perfectly. Thanks for your help.