Пара слов про OUTER JOIN.

Хочешь наложить условия на сами переджойненные таблицы - пиши условие в ON, из WHERE они не работают.
Т.е., вот так писать правильно:


чтобы получить весь список person и null-значения в timetable.

И вот так писать неправильно:


Фильтрация выборки тоже пихается в ON. Я, кстати, не догоняю, что тогда можно написать в WHERE помимо t.id is null (если хотим исключить пересекающиеся id), чтобы оно при этом работало