Thanks for that - im pretty sure im not using it correctly.
I read that section in the manual (realised now i missed the bit that says these cases are few) and used it because when using EXPLAIN on the query i found that it was performing the joins in the wrong order and in doing so requiring an entire scan of the first table. I put straight_join in an it seemed to fix the problem - the joins were done in the order i wanted which as far as i can see is the best order.
I've never known that much about the different joins - find all the different types of joins very confusing.
I normally just use JOIN if it's making a join where there must be a matching row and LEFT JOIN if there doesn't need to be a matching row and thus make the values of the columns in that table null. (if that makes any sense...)
If you know of any good tutorials on using the different joins that would be great!