我正在尝试从两个不同的表中访问信息并检索信息,但这一切都是如此,以便多次提取用户信息,等待表tbl_fruits中列出的水果数量。
喜欢能够一次显示用户信息并同时拉出与用户相关的多少水果。
2表: tbl_users: 用户身份 名字 名字
tbl_fruits: 用户身份 水果
在示例代码中,userID 4在tbl_fruit中有3个与他相关的成果。从下面的结果中可以看出,用户信息被多次列出。如何重写代码,以便用户信息被拉出一次,水果显示3次。
$clientID = "4";
try
{ $stmt = $dbcon1 ->query("SELECT
tbl_fruits.fruit,
tbl_users.userid,
tbl_users.firstname,
tbl_users.lastname
FROM tbl_users
LEFT JOIN tbl_fruits
ON tbl_fruits.userid = tbl_users.userid
WHERE tbl_users.userid = '$clientID' ");
$testArray = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
catch(PDOException $e)
{ echo $e->getMessage(); }
echo '<pre>';
print_r($testArray);
echo '</pre>';
结果
array
(
[0] => Array
(
[fruit] => Apple
[userid] => 4
[firstname] => John
[lastname] => Smith
)
[1] => Array
(
[fruit] => Orange
[userid] => 4
[firstname] => John
[lastname] => Smith
)
[2] => Array
(
[fruit] => Banana
[userid] => 4
[firstname] => John
[lastname] => Smith
)
)
答案 0 :(得分:0)
更改您的查询,如下所示:
{ $stmt = $dbcon1 ->query("SELECT
count(tbl_fruits.userid)
tbl_users.userid,
tbl_users.firstname,
tbl_users.lastname
FROM tbl_users
LEFT JOIN tbl_fruits
ON tbl_fruits.userid = tbl_users.userid
WHERE tbl_users.userid = '$clientID'
GROUP BY tbl_users.userid ");
count(tbl_fruits.userid)
部分计算该行值tbl_fruits.userid
的唯一行数,而GROUP BY tbl_users.userid
部分则删除重复项。
请务必在tbl_users.userid
和tbl_fruits.userid
上添加索引以获得最佳效果。