Подтвердить что ты не робот

MySQL "Неизвестная колонка в разделе"

У меня есть следующий запрос 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

Есть ли у кого-нибудь мысли о том, почему это происходит? Благодарим за помощь.

4b9b3361

Ответ 1

потому что ваш синтаксис соединения соединения

From Mysql [docs]

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

решение:

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

SELECT * FROM (t1, t2) JOIN t3 ON (t1.i1 = t3.i3);

Альтернативно, избегайте использования оператора запятой и используйте JOIN вместо:

SELECT * FROM t1 JOIN t2 JOIN t3 ON (t1.i1 = t3.i3);

Ответ 2

это то, что у половины двоеточия у вас есть ON posts.author=users.id;

Ответ 3

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

Ответ 4

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