I am not sure about MySQL but in Oracle this will NOT work: "SELECT "A" AS SortCode,
* FROM Jobs"
However, this WILL: "SELECT "A" AS SortCode,
Jobs.* FROM Jobs"
Try adding the table or alias in front of the "*".
In general, however, I will repeat my suggestion from before - try to do everything in
one pass - it's much more efficient.
Something like this:
"SELECT (CASE
WHEN Jobs.Project = MyProject AND Jobs.JobType = MyJobType then "A"
WHEN Jobs.Project => MyProject AND Jobs.JobType <> MyJobType then "B"
WHEN Jobs.Project <> MyProject AND Jobs.JobType = MyJobType then "C"
WHEN Jobs.Project <> MyProject AND Jobs.JobType <> MyJobType then "D"
END CASE
) SortCode,
Jobs.*
ORDER BY SortCode ASC,
Jobs.Priority ASC
Instead of reading the table 4 times, each time taking a slice and labeling it A/B/C/D
you read it once and during that one pass you attach to each row the code of A/B/C/D
depending on its content and you're done. One pass instead of 4 and no UNIONs.
You might have to tinker with the syntax if CASE is not available in MySQL to this
extent but that's the general idea.
In a message dated 4/13/2004 6:50:33 PM Eastern Daylight Time, [EMAIL PROTECTED]
writes:
>
> Hey gang, many thanks to all for pointing me in the right direction for
> my previous "multiple selects" question. I moved to 4.1.1 and
> implemented Udikarni's use of multiple sum()s instead of multiple
> selects() and that stuff is all groovy now!
>
> Of course, I'm beating my head on *another* wall now...wouldn't ya just
> know it?
>
> My client code checks the main table for a few different criteria, and I
> used an additional "hard" select for a sorting method. Basically, each
> client looks for jobs to process, starting with jobs under its "default
> project" and "default jobtype", and then by its "default project" and
> all other jobtypes, and finally everything else. Within each of these
> sets, jobs are sorted by a "Priority" field.
>
> My previous query looked like this (butchered pseudocode follows):
>
> "SELECT "A" AS SortCode, * FROM Jobs WHERE Jobs.Project = MyProject AND
> Jobs.JobType = MyJobType
> UNION ALL SELECT "B" AS SortCode, * FROM Jobs WHERE Jobs.Project =
> MyProject AND Jobs.JobType <> MyJobType
> UNION ALL SELECT "C" AS SortCode, * FROM Jobs WHERE Jobs.Project <>
> MyProject AND Jobs.JobType = MyJobType
> UNION ALL SELECT "D" AS SortCode, * FROM Jobs WHERE Jobs.Project <>
> MyProject AND Jobs.JobType <> MyJobType
> ORDER BY SortCode ASC, Jobs.Priority ASC
>
> Now, in MySQL 4.1.1, I can't even get the first line to work - I suspect
> that I'm doing something wrong with that pesky asterisk, because the
> following works:
>
> "SELECT "A" AS SortCode, JobName FROM Jobs"
>
> But the following does not:
>
> "SELECT "A" AS SortCode, * FROM Jobs"
>
> From what I can see in the MySQL.org docs, this should work...any
> ideas? If I can get around that, I suspect that my UNIONS will work OK
> and all will be well in the world....one can hope?!?
>
> As before, many thanks for any insight that y'all can provide!!
>
> Steve
>
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:
> http://lists.mysql.com/[EMAIL PROTECTED]
>
>
>
>
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]