Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MySQL-如何从一列相对于另一列检索数据_Mysql_Sql_Join - Fatal编程技术网

PHP/MySQL-如何从一列相对于另一列检索数据

PHP/MySQL-如何从一列相对于另一列检索数据,mysql,sql,join,Mysql,Sql,Join,可能重复: 我想用php和mysql建立一个小论坛。我有两张桌子: 论坛帖子:id(主键),用户id(外键),文本 及 用户:id(主键),用户名 现在我想列出所有论坛帖子,并在每个帖子中显示作者 我的尝试: $mySQL_getPosts = mysql_query('SELECT * FROM forum_posts ORDER BY id ASC'); 这当然给了我所有的帖子。但是我如何连接到我的用户表呢 最后,我想显示这样一篇文章: Username wrote: | Here go

可能重复:

我想用php和mysql建立一个小论坛。我有两张桌子:

论坛帖子:id(主键),用户id(外键),文本

用户:id(主键),用户名

现在我想列出所有论坛帖子,并在每个帖子中显示作者

我的尝试:

$mySQL_getPosts = mysql_query('SELECT * FROM forum_posts ORDER BY id ASC');
这当然给了我所有的帖子。但是我如何连接到我的用户表呢

最后,我想显示这样一篇文章:

Username wrote: | Here goes the text from forum_posts 
这是一个选项:

SELECT FP.id,U.Username
FROM forum_posts FP, users U 
WHERE FP.user_id = U.id ORDER BY id ASC
我错过什么了吗

但加入更好

这是一个选项:

SELECT FP.id,U.Username
FROM forum_posts FP, users U 
WHERE FP.user_id = U.id ORDER BY id ASC
我错过什么了吗

但加入更好


您需要做的是在两个表之间建立连接。在您的情况下,它将是这样的:

Username wrote: | Here goes the text from forum_posts 
从论坛中选择f.text、u.username\u帖子加入用户u(f.user\u id=u.id)


了解有关SQL的更多信息,尤其是连接。连接有很多种类型,您可能会遇到其中一些类型的连接。如果您试图在PHP+MySQL中构建一个类似论坛的网站,那么您将编写的大多数查询将至少包含一个连接。

您需要做的是在这两个表之间建立一个连接。在您的情况下,它将是这样的:

Username wrote: | Here goes the text from forum_posts 
从论坛中选择f.text、u.username\u帖子加入用户u(f.user\u id=u.id)


了解有关SQL的更多信息,尤其是连接。连接有很多种类型,您可能会遇到其中一些类型的连接。如果您试图在PHP+MySQL中构建类似论坛的网站,那么您将编写的大多数查询将至少包含一个join。

这就是join命令的用武之地。即使没有相关用户,LEFT JOIN也会从论坛_帖子中获取记录。如果这无法实现,或者如果你不想发布匿名帖子,请删除左侧部分


从论坛中选择f.*,u.username\u发布为f LEFT JOIN user AS u ON f.id=u.id ORDER BY id ASC

这就是JOIN命令的用武之地。即使没有相关用户,LEFT JOIN也会从论坛_帖子中获取记录。如果这无法实现,或者如果你不想发布匿名帖子,请删除左侧部分


选择f.*,u.username FROM forum_posts AS f LEFT JOIN user AS u ON f.id=u.id ORDER BY id ASC

您可以使用基本的内部联接将两个表链接在一起,如下所示:

注意:
最好只从表中选择所需的列,而不是所有列。

您可以使用基本的内部联接将两个表链接在一起,如下所示:

注意:
最好只从表中选择所需的列,而不是所有的列。

要给出两个表之间的关系,必须使用mysql连接

论坛帖子:id(主键)、用户id(外键)、文本[主表]

用户:id(主键),用户名[借助主表id连接此表]

$sql\u query\u string=“从论坛帖子中选择fp.*作为fp
>以u开启的身份左加入用户(u.id=fp.user\u id)
>按fp.id asc订购”;
> 
>$result=mysql\u query($sql\u query\u string);
> 
>而($data=mysql\u fetch\u row($result)){
>回显“;打印($result);”;}

此查询将有助于您显示作者,以给出必须使用mysql联接的两个表之间的关系

论坛帖子:id(主键)、用户id(外键)、文本[主表]

用户:id(主键),用户名[借助主表id连接此表]

$sql\u query\u string=“从论坛帖子中选择fp.*作为fp
>以u开启的身份左加入用户(u.id=fp.user\u id)
>按fp.id asc订购”;
> 
>$result=mysql\u query($sql\u query\u string);
> 
>而($data=mysql\u fetch\u row($result)){
>回显“;打印($result);”;}

此查询将有助于u显示作者

+1加入优先于我的答案+1加入优先于我的答案