У моей базы данных есть 3 таблицы, в которые я хочу получить доступ в запросе select, но я не могу заставить его работать. Выбор из 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