簡體   English   中英

在PHP查詢中難以連接3個表

[英]Difficulty with join 3 tables in a query in php

我的數據庫有3個表,我希望在select查詢中訪問這些表,但似乎無法正常工作。 從2個表中進行選擇可以很好地工作,所以我知道除了從3個表中進行選擇的代碼以外,其他所有功能都在起作用。 我的數據庫已在PHPmyadmin上創建

表格如下:

forum_replies

  • reply_id
  • topic_id
  • 用戶身份
  • REPLY_TEXT
  • 回復日期

forum_topics

  • topic_id
  • CATEGORY_ID
  • 用戶身份
  • 主題標題
  • 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); 

代碼示例。 謝謝

你錯過了,以后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

使用此查詢:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM