Php 在关系表中使用外键选择字段
我试图显示主题create(username),但必须通过一个关系表来检索它。我已经创建了一个显示回复创建者(用户名)的查询,我相信我需要一个子查询,但以前从未使用过Php 在关系表中使用外键选择字段,php,sql,Php,Sql,我试图显示主题create(username),但必须通过一个关系表来检索它。我已经创建了一个显示回复创建者(用户名)的查询,我相信我需要一个子查询,但以前从未使用过 $queryreply = "SELECT a.reply_id,a.reply_text, a.reply_date, b.topic_title, c.username AS reply_user, (SELECT username FROM users WHERE user_id=b.user_i
$queryreply = "SELECT a.reply_id,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
";
我基本上是想用外键检索用户名,希望下面能解释一下:
$queryreply = "SELECT a.reply_id,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
";
Forum\u Responses.topic\u id>>>>>Forum\u topics.topic\u id和Forum\u topics.user\u id>>>>>>users.user\u id
$queryreply = "SELECT a.reply_id,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
";
各表如下:
$queryreply = "SELECT a.reply_id,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
";
论坛的答复
$queryreply = "SELECT a.reply_id,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
";
- 答复:
- 主题id
- 用户id
- 答复(文本)
- 答复日期
$queryreply = "SELECT a.reply_id,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
";
- 主题id
- 类别识别码
- 用户\u id
- 题目
- 主题描述
- 主题日期
$queryreply = "SELECT a.reply_id,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
";
- 用户id
- 用户名
$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.user_id,
forum_topics.topic_id,forum_topics.topic_title, forum_topics.topic_date
FROM forum_replies
LEFT JOIN forum_topics
ON forum_replies.topic_id = forum_topics.topic_id
LEFT JOIN users
ON forum_replies.user_id = users.user_id
";
$result = mysql_query($queryreply) or die (mysql_error());
$row = mysql_fetch_array($result);
if(empty($row['topic_id'])){
echo "No replies have been posted in this Topic, be the first to have your say using form below.";} ?>
<table id="categorytable">
<tr><td><?php echo '<b>'.$row['topic_title'].'</b>';?></b><br><br></td></tr>
<tr><td><?php echo $row['reply_date'].' - '.$row['username'].' Replied with: ';?><br><br></td></tr>
<tr><td><?php echo $row['reply_text'];?></td></tr>
$queryreply = "SELECT a.reply_id,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
";
$queryreply=“选择论坛\u represponse.reply\u id,forum_urepresponse.topic\u id,forum\u represponse.user\u id,
论坛回复。回复文本,论坛回复。回复日期,用户。用户id,用户。用户名,论坛主题。用户id,
论坛主题。主题id、论坛主题。主题标题、论坛主题。主题日期
来自论坛的回复
左键加入论坛主题
在论坛上回复.topic\u id=论坛主题.topic\u id
左加入用户
在论坛上\u回复.user\u id=users.user\u id
";
$result=mysql\u query($queryreply)或die(mysql\u error());
$row=mysql\u fetch\u数组($result);
if(空($row['topic_id'])){
echo“此主题中未发布任何回复,请首先使用下面的表格发表您的意见。”;}?>
我知道mysql_*函数已被弃用,但uni工作人员要求我使用它们。如果有任何帮助,我将不胜感激。谢谢添加另一个加入:
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.user_id,
forum_topics.topic_id,forum_topics.topic_title, forum_topics.topic_date,
users.user_id as topic_user_id, users.username as topic_username,
FROM forum_replies
LEFT JOIN forum_topics ON forum_replies.topic_id = forum_topics.topic_id
LEFT JOIN users ON forum_replies.user_id = users.user_id
LEFT JOIN users u2 ON forum_topics.user_id = u2.user_id
$queryreply = "SELECT a.reply_id,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
";
…正如您在另一个问题中提到的:使用别名可以根据需要多次加入表。所以您可以使用不同的ON语句将表用户连接到更多的表用户
$queryreply = "SELECT a.reply_id,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
";
选择
论坛回复。回复id,论坛回复。主题id,论坛回复。用户id,论坛回复。回复文本,
论坛回复。回复日期,用户。用户id,用户。用户名,论坛主题。用户id,
论坛主题。主题id,论坛主题。主题标题,论坛主题。主题日期,
topic_creators.username
来自论坛的回复
左侧加入论坛\u论坛上的主题\u回复。主题\u id=论坛\u主题。主题\u id
左加入论坛上的用户。\u回复。用户\u id=用户。用户\u id
左键作为论坛上的主题创建者加入用户。用户id=主题创建者。用户id代码>另一个stackoverflow用户向我发送了代码,现在它工作得很好,不过谢谢你们的帮助。我非常感谢你的建议。以下是您感兴趣的代码:
$queryreply = "SELECT a.reply_id,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
";
不行-你有两个名为username的列我已经测试过了,效果很好。在你的回答中,你有两列名为user_id。我也是,如果要澄清的话)这两列我都有别名。另一个stackoverflow用户给我发送了代码,它现在工作得很好,不过谢谢你们的帮助。非常感谢您的建议。感谢您的帮助,我使用别名添加了另一个加入,但当我尝试呼出主题创建者的用户名时,它会显示回复创建者。你知道我应该使用什么代码吗?当然你必须使用echo$row['topic_username']代码>我在声明中使用的名称。顺便说一句-你应该编辑你的问题并添加你现在所做的事情另一个stackoverflow用户向我发送了代码,它现在工作得很好,谢谢你们的帮助。我非常感谢你的建议。以下是您感兴趣的代码:$queryreply=“选择a.reply\u id、a.reply\u text、a.reply\u date、b.topic\u title、c.username作为reply\u用户(从user\u id=b.user\u id的用户中选择用户名)作为论坛的主题创建者,论坛答复左加入论坛主题b。主题id=b。主题id左加入用户c。用户id=c。用户id“;