• With risk to duplicate what Gaz mentinoned, we need to understand the basic processing/binding order (FROM, ON, JOIN and so on) and realize that the Query processor is the final station when it comes to nuts&bolts on how the Query actually gets executed.

    To that I would add something that gets lost all the time: Clear structure and Annotation. Don't forget to write down what all your modules are supposed to accomplish. So many hours trying to understand someone elses complex code and finally realize it's just plain incompetence that produced that seemingly complex code.