René,

> I want to select about 25 rows from a table, and sort them by two
> criteria. First, by each row's Series field ("Baby", "Genesis", "Super",
> "Predator", "Millennium" are the various Series, and the order I'd like
> the rows in the array). Within each Series, I'd like the rows sorted by
> their Price field, ascending. For example:
> Baby $5
> Baby $10
> Baby $15
> Genesis $20
> Genesis $35
> Genesis $50
> ...and so on.

> Now, I know how to structure my MySQL Select statment such that the rows
> it pulls from the table will be either sorted by Price OR by Series, but
> not both, in the way I'd like. Does anyone know if it's possibly to do
> this in the Select statement itself? (I'd rather do it that way, than
> resort in PHP.)

> The problem is, if I sort by the price field, the ordering of the series
> gets mixed up (since low-end models in higher-end series cost more than
> some higher-end models in lower-end series (confused?? I am :-)  If I
> just sort by series, I don't get the prices in order within each series
> (big problem). And if I sort by BOTH series and price, which is the
> logical thing to do, and which many people have kindly suggested (and
> which I have tried), well, it doesn't work, because the series must be
> sorted in a non-alphabetical way.
>
> I've looked at PHP's myriad sorting functions, and well--maybe I need
> more sun (I live in Canada... winter...)--I can't see a 'simple' way to
> do a non-numerical, non-alphabetical (user-defined?) sort on the Series
> fields, then subsort each series by price.

> can you have another field in your table(s) for a "weighting" and then
> sort on that?
> otherwise you'll have to use php

> You know, in spite of all the good advice I've received, I think that's
> what I'll have to do. I say "have to" because inserting another field
> into the table creates some complications (long story... related to the
> web admin tool I made for editing the tables). Actually, come to think
> of it, there is an existing field that I could reuse for this purpose.
> Yes, that will work!


=Did you manage to solve this? There is a way to accomplish what you want, without 
this resorting to an extra
field or PHP (providing the range of values in the Series field is manageable).

SELECT
  SERIES
, PRICE
, FIELD( SERIES, "Baby", "Genesis", "Super", "Predator", "Millennium" ) as PRIORITY
FROM TblNm
ORDER BY PRIORITY, PRICE

NB not having access to your db I haven't properly tested this code, nor was I quite 
clear from your
example/text about the relative importance of PRIORITY and PRICE in the sequencing, so 
please experiment/test.

Regards,
=dn



---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to