В моей базе данных есть 3 таблицы, к которым я хочу получить доступ в запросе выбора, но я не могу заставить его работать. Выбор из 2 таблиц работает нормально, поэтому я знаю, что все остальное работает отдельно от моего кода для выбора из 3 таблиц. Моя база данных была создана на PHPmyadmin
Таблицы следующие:
forum_replies
forum_topics
пользователи
Это код, который я пытался использовать, и показывает поля, которые я хочу выбрать:
$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);
Пример в коде будет оценен. Спасибо
Используйте этот запрос:
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
Вы скучаете по ,
после 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