MySQL «Неизвестный столбец в предложении» [дубликат]

На этот вопрос уже есть ответ:

MySQL неизвестный столбец в предложении ON 3 ответа

У меня следующий запрос MySQL:

SELECT posts.id,  posts.name,  LEFT(posts.content, 400),  posts.author,  posts.date, users.display_name,
  GROUP_CONCAT(tags.tag ORDER BY tag_linking.pid ASC SEPARATOR ",") update_tags
FROM posts, tag_linking, tags
INNER JOIN `users`
ON posts.author=users.id;
WHERE tag_linking.pid = posts.id 
  AND tags.id = tag_linking.tid 
ORDER BY posts.date DESC

Который, как вы можете видеть, соединяет три таблицы и т. Д. И т. Д. В любом случае, проблема в том, что выдает ошибку:

ERROR CODE:
SQL Error (1054): Unknown column 'posts.author' in 'on clause'

хотя этот простой запрос, используемый на другой странице, работает:

SELECT posts.id,  posts.name,  LEFT(posts.content, 400),  posts.author,  posts.date, users.display_name FROM `posts`
INNER JOIN `users`
ON posts.author=users.id

У кого-нибудь есть мысли, почему это происходит? Спасибо за вашу помощь

Ответы на вопрос(4)

from пункт и окружение их скобками заставит это работать. Но смешивание соединений - все еще плохая практика.

что автор не существует в почтовой таблице. либо орфографическая ошибка ??

ON posts.author=users.id;

From Mysql [документы]

Однако приоритет оператора запятой меньше, чем у INNER JOIN, CROSS JOIN, LEFT JOIN и т. Д. Если вы смешиваете запятые объединения с другими типами соединений, когда есть условие соединения, может произойти ошибка вида Неизвестный столбец 'col_name' в 'предложении'. Информация о решении этой проблемы приведена ниже в этом разделе.

решение:

Чтобы разрешить обработку объединения, сгруппируйте первые две таблицы в явных скобках, чтобы операндами для предложения ON были (t1, t2) и t3:

ВЫБРАТЬ * ОТ (t1, t2) ПРИСОЕДИНЯЙТЕСЬ к t3 ON (t1.i1 = t3.i3);

В качестве альтернативы, избегайте использования оператора запятой и используйте вместо этого JOIN:

ВЫБРАТЬ * ОТ t1 ПРИСОЕДИНИТЬСЯ к t2 ПРИСОЕДИНИТЬСЯ к t3 ВКЛ (t1.i1 = t3.i3);

ВАШ ОТВЕТ НА ВОПРОС