gpt4 book ai didi

php - 当使用 Join 并且 2 个表具有相同名称的字段时,如何在 MYSQL 查询中查明正确的结果?

转载 作者:行者123 更新时间:2023-11-29 07:45:02 28 4
gpt4 key购买 nike

我有一个连接,连接的结果是正确的,但是我想显示一个变量,但它不是像$variable那样的变量格式,它的格式是$row['field'],但是,它未显示正确的值,因为字段名称在两个表中。

有时显示左边,有时显示右边。我不知道如何强制它显示我想要的。

例如我有这个查询:

SELECT
user_table.*, user_groups.*
FROM
user_table
LEFT JOIN user_groups ON user_groups.groupid = user_table.usergroup
WHERE
user_table.client = "0"
AND user_table.usergroup != "1"
ORDER BY
user_groups.name ASC

不会把每个领域都放进去,因为太多了,只有几个可以理解。

用户表:

userid, username, usergroup, fname, sname, company

用户组:

groupid, name, userid

JOIN 将产生如下结果:

userid  username  usergroup  fname  sname   company  groupid  name   userid1
1129 whatever 2286 first last abc 2286 abc 0

然后我开始回显所有字段,如下所示:

while ($row=mysql_fetch_assoc($result)) {
echo $row['username']." ".$row['userid']." ".$row['company']." ".$row['fname']." ".$row['sname']." ".$row['username'];
}

除用户 ID 外,所有数据均正确。它将使用零(0)而不是我想要的 1129。

我已针对用户 ID echo 尝试了以下所有操作:

$row['userid']
$row['userid0']
$row['userid1']
$row['userid[0]']
$row['userid[1]']
$row['userid'][0]
$row['userid'][1]

没有任何效果。它要么显示结果中的错误,要么不显示任何内容。

最佳答案

PHP 尝试将列名映射到 key => value 对。如果有一列名称重复,那么您只会得到一个。

使用 AS 关键字 ( http://www.w3schools.com/sql/sql_alias.asp ) 映射 MySQL 中的第二个 userid 列,为第二个 userid 字段指定不同的名称。

SELECT
user_table.*, user_groups.groupid, user_groups.name, user_groups.userid AS group_userid
FROM
user_table
LEFT JOIN user_groups ON user_groups.groupid = user_table.usergroup
WHERE
user_table.client = "0"
AND user_table.usergroup != "1"
ORDER BY
user_groups.name ASC

然后您可以像这样访问这两个字段:

$row['userid']; // client.userid
$row['group_userid']; // user_groups.userid

关于php - 当使用 Join 并且 2 个表具有相同名称的字段时,如何在 MYSQL 查询中查明正确的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28033446/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com