The query is executed at different points with potentially different arguments, so cannot cache the result of the query.
Thus, I'd apply the 'Rule of three' (http://en.wikipedia.org/wiki/Rule_of_three_(computer_programming)) and keep it for the moment. Ok for you?