gpt4 book ai didi

php - MySQL从多个表中提取信息问题

转载 作者:行者123 更新时间:2023-11-30 01:31:34 26 4
gpt4 key购买 nike

我正在尝试从 2 个不同的表访问信息并检索信息,但这一切都会多次提取用户信息,直到表 tbl_fruits 中列出了多少水果。

希望能够一次显示用户信息并同时提取与用户关联的任意数量的水果。

2 个表:表用户: 用户身份 名 姓氏

tbl_fruits: 用户身份 水果

在示例代码中,用户 ID 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
)

)

最佳答案

按如下方式更改您的查询:

{    $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.useridtbl_fruits.userid 上建立索引以获得最佳性能。

关于php - MySQL从多个表中提取信息问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17394815/

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