Re: Order By [blank]

From: Date: Thu, 21 Dec 2006 18:57:53 +0000
Subject: Re: Order By [blank]
References: 1  Groups: php.db 
Request: Send a blank email to php-db+get-42841@lists.php.net to get a copy of this message
I haven't tried the union method.... the query i have is actually quite a bit more complicated than just a simple select * from a single table, so while it may work, it might take a while to write it if I am reading all this right. But yes, the ifnull() method works just fine. Thanks for your help. -- Kevin Murphy Webmaster: Information and Marketing Services Western Nevada Community College www.wncc.edu 775-445-3326 On Dec 21, 2006, at 10:12 AM, <tg-php@gryffyndevelopment.com> <tg- php@gryffyndevelopment.com> wrote: > You shouldn't have to do that. the IFNULL() handles all that. If > the item is null, it returns an emptry string ''. If it's blank/ > empty, it returns an empty string. This is just used for the > comparison = ''. This determines if it's empty or null and if so, > returns 'ZZZZZZZZZZZZZZZZZZZZZZZZZZ', if not, it returns the > unaltered value. And again, this returned value is only used for > the sorting. The values you get from "select *" will be unaltered. > > Is this more efficient than doing two SELECTs and a UNION? I have > no idea. But I like to keep things as clean as possible and in my > reading and experience, letting the server handle an IFNULL() > function should be quicker than doing four value checks (is null, > is not null, = '' and != ''), collecting the values of two SELECTS > then checking to see if it's able to UNION them together. > > Also, less code/typing typically means less chance of typos. > > > BTW: In my example, realistically you could probably shorten the > morphed value to "ZZ" or "ZZZ" unless you think you'll values in > your database that will start with "ZZZZ" and get bumped lower on > the sorting. > > -TG > > = = = Original message = = = > > In case the blank is a null or is really a blank: > > select * from blank where tchar_10 is not null and tchar_10 != '' > union all > select * from blank where tchar_10 is null or tchar_10 = '' > > - Dave > > On 12/21/06, tg-php@gryffyndevelopment.com <tg- > php@gryffyndevelopment.com> > wrote: >> >> This is a little weird looking, but should do the job. Remember that >> items in your 'order by' can be manipulated conditionally. In >> this case, >> I'm looking for NULL as well as '' (empty) and changing it to >> something that >> should come after all your normal alphabetical values, but it >> doesn't change >> what appears in your results. This only affects the sorting: >> >> select * from sometable order by if(ifnull(somecolumn, '') = '', >> 'ZZZZZZZZZZZZZZZZZZZZZZZZ', somecolumn) >> >> Hope that helps. >> >> -TG >> >> = = = Original message = = = >> >> I have this column in mysql: >> >> A >> F >> D >> [ empty ] >> A >> C >> >> If I do an order by on that column, this is what I get: >> >> [ empty ] >> A >> A >> C >> D >> F >> >> What I would like is this: >> >> A >> A >> C >> D >> F >> [ empty ] >> >> Is there any way to achieve this in a single MySQL query? Using DESC >> in this case doesn't work, because while it puts the empty row in the >> last place, it does the rest as well. I could also do 2 queries where >> it calls it once in order WHERE !='', and then do another query to >> get the empty ones, but that seems a bit cumbersome. >> >> -- >> Kevin Murphy >> Webmaster: Information and Marketing Services >> Western Nevada Community College >> www.wncc.edu >> 775-445-3326 >> >> >> >> >> -- >> Kevin Murphy >> Webmaster: Information and Marketing Services >> Western Nevada Community College >> www.wncc.edu >> 775-445-3326 > > > ___________________________________________________________ > Sent by ePrompter, the premier email notification software. > Free download at http://www.ePrompter.com. > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php >

« previous php.db (#42841) next »