Трудность с объединением 3 таблиц в запросе в переполнении стека

В моей базе данных есть 3 таблицы, к которым я хочу получить доступ в запросе выбора, но я не могу заставить его работать. Выбор из 2 таблиц работает нормально, поэтому я знаю, что все остальное работает отдельно от моего кода для выбора из 3 таблиц. Моя база данных была создана на PHPmyadmin

Таблицы следующие:

forum_replies

  • reply_id
  • topic_id
  • Идентификатор пользователя
  • REPLY_TEXT
  • дата ответа

forum_topics

  • topic_id
  • category_id
  • Идентификатор пользователя
  • TOPIC_TITLE
  • topic_description
  • topic_date

пользователи

  • Идентификатор пользователя
  • имя пользователя

Это код, который я пытался использовать, и показывает поля, которые я хочу выбрать:

    $queryreply = "SELECT forum_replies.reply_id, forum_replies.topic_id, forum_replies.user_id,
forum_replies.reply_text, forum_replies.reply_date, users.user_id, users.username
forum_topics.topic_id,forum_topics.topic_title, forum_topics.topic_date
FROM forum_replies
JOIN forum_topics
ON forum_replies.topic_id = forum_topics.topic_id
JOIN users
ON forum_replies.user_id = users.user_id

";$result = mysql_query($queryreply) or die (mysql_error());
$row = mysql_fetch_array($result);

Пример в коде будет оценен. Спасибо

1

Решение

Используйте этот запрос:

SELECT a.reply_text, a.reply_date, b.topic_title, c.username
FROM forum_replies a
LEFT JOIN forum_topics b ON a.topic_id=b.topic_id
LEFT JOIN users c ON a.user_id=c.user_id
// apply WHERE, ORDER, GROUP if needed

Помимо синтаксических ошибок, вы должны использовать LEFT JOIN и псевдоним таблицы в вашем случае.


Чтобы показать также имя пользователя создателя темы, вы можете настроить запрос следующим образом:

SELECT a.reply_text, a.reply_date, b.topic_title, c.username AS reply_user, (SELECT username FROM users WHERE user_id=b.user_id) AS topic_creator
FROM forum_replies a
LEFT JOIN forum_topics b ON a.topic_id=b.topic_id
LEFT JOIN users c ON a.user_id=c.user_id
// apply WHERE, ORDER, GROUP if needed
0

Другие решения

Вы скучаете по , после users.username..

SELECT forum_replies.reply_id, forum_replies.topic_id, forum_replies.user_id,
forum_replies.reply_text, forum_replies.reply_date, users.user_id, users.username,
forum_topics.topic_id,forum_topics.topic_title, forum_topics.topic_date
0

По вопросам рекламы [email protected]