Пара слов про OUTER JOIN.
Хочешь наложить условия на сами переджойненные таблицы - пиши условие в ON, из WHERE они не работают.
Т.е., вот так писать правильно:
чтобы получить весь список person и null-значения в timetable.
И вот так писать неправильно:
Фильтрация выборки тоже пихается в ON. Я, кстати, не догоняю, что тогда можно написать в WHERE помимо t.id is null (если хотим исключить пересекающиеся id), чтобы оно при этом работало