Good article. I just want to present a style of coding that prevents this situation. I often work with queries involving a dozen tables. Notice that each table is basically a separate select statement. If I didn't code in my style, I'd quickly get confused.
select
p.*,
c.*
FROM
(-- professor data
SELECT
Professor.Id AS [Id],
Professor.ProfessorName,
CASE Professor.HasTenure WHEN 1 THEN 'True' WHEN 0 THEN 'False' ELSE NULL END AS [Has Tenure]
FROM Professor
WHERE Professor.HasTenure = 'True'
) as P
left outer join
(-- class data
SELECT
Class.ProfessorId AS [ProfessorId],
Class.ClassName,
Class.ClassYear,
Class.ClassSemester
FROM Class
WHERE Class.ClassYear >= 2011
) as c on p.Id = c.ProfessorId