使用 Join 时,如何在 MYSQL 查询中查明正确结果,并且 2 个表具有同名字段?
How do I pinpoint correct result in MYSQL Query when using Join and the 2 tables have field with same name?
我有一个连接,连接的结果是正确的,但是我想显示一个变量,但它不是像$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
不打算每个字段都放,因为太多了,就几个来了解一下。
user_table:
userid, username, usergroup, fname, sname, company
user_groups:
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'];
}
除用户标识外,所有数据都是正确的。它将使用零(0)而不是我想要的 1129。
我已经为用户标识 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
我有一个连接,连接的结果是正确的,但是我想显示一个变量,但它不是像$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
不打算每个字段都放,因为太多了,就几个来了解一下。
user_table:
userid, username, usergroup, fname, sname, company
user_groups:
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'];
}
除用户标识外,所有数据都是正确的。它将使用零(0)而不是我想要的 1129。
我已经为用户标识 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