temporary tables make sens, if you want to operate on multiple queries in the same connection.
Also, temporary tables are visible only to the connection, if multiple connections will create temp table by the same name - they all will see their own content, ie - it is not shared between connections.
What you probably need, is either wait for 8.4, and use WITH() , or use subquery as 'temporary' data.
or fire two queries, one creating temporary table, second one using it.
Try all, and see which one will apply best to your problem, and which one will be fastest.
I am using temporary tables, to keep large amounts of data, that's used for transactions within connection. That saves me bandwith, all in all - time, and makes life much easier.