hmmmm depends on database and on size of SQL query...
I'd say that if you keep the multiple tables solution, you should have a ref table with all your cat table names and loop on the ref table to generate the SQL query...
Important thing is to think about maintainability and DB server load. having a table for each cathegory may be a good solution today but will it be when you have a cat to add? and then how bad will your code be impacted?
my 2 cents