Re: sql statement - complex order by
| From: | tg-php at gryffyndevelopment dot com | Date: | Mon, 02 Jul 2007 20:19:01 +0000 |
| Subject: | Re: sql statement - complex order by | ||
| Groups: | php.db | ||
| Request: | Send a blank email to php-db+get-43736@lists.php.net to get a copy of this message | ||
Yeah, that's a bit of an important piece of information. Some tricks do work across versions
of SQL, but not always.
Something else you can try is creating an artificial column to sort by. Excuse the code, it's
been ages since I've worked with MS SQL so syntax is probably off, but just to demonstrate the
point:
SELECT * FROM productgroup WHERE groupid = $productid
ORDER BY IIF(label = 'Cats', 0, 1), title
Was that MS SQL or just Access that used IIF? (immediate IF.. wtf is an 'immediate IF'
anyway?)
-TG
= = = Original message = = =
I think there's one small piece of data I left out. I'm working with
php/mssql, no mysql. I'll move to mysql when I get everything else
built. Mssql 2000 doesn't seem to like the = sign in the order by
clause. It looks like both of you so far have come up with the same
syntax though so it must work on mysql. ;-)
Thanks guys...
tg-php@gryffyndevelopment.com wrote:
> Try this:
>
> SELECT * FROM productgroup WHERE groupid = $productid
> ORDER BY label = 'Cats' DESC, title
>
> The test SQL I did to make sure I understood it was this (against our Users table):
>
> select * from users order by first = 'Bob' DESC, first, last
>
> It put all the "Bob"s first, sorting them by first/last, then put everyone else after
> the "Bob"s sorted by first/last.
>
> If you don't put DESC on the 'Cats', it looks like it'll put the
> 'Cats' at the bottom of the list.
>
> Also refer to the user comments here:
> http://dev.mysql.com/doc/refman/4.1/en/sorting-rows.html
>
> good luck!
>
> -TG
>
> = = = Original message = = =
>
> SELECT * FROM productgroup WHERE groupid = $productid
> AND label = 'Cats' ORDER BY title
>
> SELECT * FROM productgroup WHERE groupid = $productid
> AND label != 'Cats' ORDER BY label,title
>
> I'd like to find a way to combine these 2 statements. I want to list out
> all the products, ordered by title but listing out all the Cats products
> first. Any way to do that without having separate statements?
>
> Thanks...
>
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
___________________________________________________________
Sent by ePrompter, the premier email notification software.
Free download at http://www.ePrompter.com.