Ваша ошибка, потому что у вас есть:
JOIN user ON article.author_id = user.id
LEFT JOIN user ON article.modified_by = user.id
У вас есть два экземпляра одной и той же таблицы, но база данных не может определить, какая есть какая. Чтобы это исправить, вам нужно использовать псевдонимы таблиц :
JOIN USER u ON article.author_id = u.id
LEFT JOIN USER u2 ON article.modified_by = u2.id
Хорошей привычкой всегда является псевдоним ваших таблиц, если вам не нравится писать полное имя таблицы все время, когда у вас нет подобных ситуаций.
Следующие проблемы, которые необходимо решить, будут:
SELECT article.* , section.title, category.title, user.name, user.name
1) Никогда не используйте SELECT *
- всегда указывайте нужные столбцы, даже если это вся таблица. Прочтите этот ТАК вопрос, чтобы понять, почему .
2) Вы получите неоднозначные ошибки в столбцах, относящиеся к столбцам user.name
, потому что база данных не может сказать, из какого экземпляра таблицы извлекать данные. Использование псевдонимов таблицы устраняет проблему:
SELECT article.* , section.title, category.title, u.name, u2.name