Added LEFT/RIGHT/INNER JOIN generation. Changed implementation from using explicit StringBuilder to String.format