Когда нужно писать имя таблицы в запросе?
Каждый сам творец своего геморроя.

Настоятельная рекомендация. Если источником записей запроса (всего, целиком) является только одна таблица - имена полей можно не указывать. Во всех остальных случаях - указывайте алиас таблицы для абсолютно каждого поля (включая имена обобщённых полей в USING и при NATURAL JOIN), кроме имён полей выходного набора, используемых в пост-группировочных выражениях. Это позволит гарантировать отсутствие неоднозначностей.

Под понятием "таблица" следует понимать строго один экземпляр исходного набора данных. Иными словами, запрос, в котором используется две копии одной таблицы, либо используется дополнительная синтетическая таблица констант, запросом с источником данных из одной таблицы не является.

---

В некоторых диалектах указание алиаса может быть обязательно и по причине интерференции имён из разных пространств. 

Например, в хранимых объектах MySQL при совпадении имени поля таблицы с именем локальной переменной обращение без указания алиаса - это всегда обращение к переменной. Поэтому для MySQL правило ещё строже - алиас указывай всегда.

И даже такая строгость порой недостаточна. Пример. Обратите внимание на сортировку - в ней id интерпретируется как имя переменной, а не имя поля выходного набора, и потому результат "странный". Кстати, это тот случай, когда вообще ничто не поможет, кроме использования выражения выходного поля вместо его имени.
galaxy, вот ещё пример
(вспомнил где не работало)

У каждой таблицы есть колонка с именем id. Остальные имена колонок разные.
Это работает
SELECT ProductCode, Name FROM table_one 
LEFT OUTER JOIN table_two 
ON  table_two.id = table_one.id_client;

Это нет
SELECT ProductCode, Name FROM table_one 
LEFT OUTER JOIN table_two 
ON  id = table_one.id_client;
[Err] 1052 - Column 'id' in on clause is ambiguous

Достаточно просто совпадения имен любых колонок в структуре таблицы ()?
То есть смотрите - в ON сравнивается id и id_client. Имена разные.
Понятно что и с чем связывается.
И даже если  ON id = id ведь понятно, что нужно сравнить id из первой таблицы со id из второй.
У нас 2 таблицы. И у каждой id. Больше не с чем сравнивать. Два одинаковых поля в таблице быть не может.