Я провел немного времени, исследуя это на здесь и mysql сайт, но я немного смущен на двух вещах: какой вид соединяют с использованием и как (или если) для использования псевдонима.
Запрос:
SELECT forum_threads.id, forum_threads.forum_id, forum_threads.sticky,
forum_threads.vis_rank, forum_threads.locked, forum_threads.lock_rank,
forum_threads.author_id, forum_threads.thread_title, forum_threads.post_time,
forum_threads.views, forum_threads.replies, users.username AS author_username
FROM forum_threads LEFT JOIN users ON forum_threads.author_id = users.id
WHERE forum_threads.forum_id=XXX
Теперь, когда запрос в настоящее время находит все потоки от данного форума и соединяет идентификатор автора потоков с таблицей имени пользователя. Я также имею lastpostid
который я также хотел бы включать в тот запрос и присоединиться снова на пользовательской таблице, таким образом, я могу получить имя пользователя для последнего плаката также.
Я пытался добавить:
LEFT JOIN users ON threads.lastpostid = users.username
но это просто приводит к ошибке псевдонима как users
не уникально.
Я также пытался использовать и псевдоним на основном запросе и на втором соединении, но это продолжает давать мне недостающие полевые ошибки.
Кто-то мог дать мне точку в правильном направлении?
Да, каждый раз вам нужен другой псевдоним. Каждый раз, когда вы обращаетесь к таблице в запросе, вы должны использовать соответствующий псевдоним.
SELECT
forum_threads.id,
-- etc...,
forum_threads.replies,
u1.username AS author_username
u2.username AS last_post_username
FROM forum_threads
LEFT JOIN users u1 ON forum_threads.author_id = u1.id
LEFT JOIN users u2 ON threads.lastpostid = u2.username
WHERE forum_threads.forum_id=XXX