gpt4 book ai didi

PHP MySQL 表连接 - 仅回显标识符一次,然后是所有匹配的项目

转载 作者:行者123 更新时间:2023-11-29 07:44:27 25 4
gpt4 key购买 nike

我有一个简单的查询,需要修改,但似乎无法弄清楚。

$query = "SELECT cust.first,pets.pet_name FROM `cust` 
LEFT JOIN pets ON cust.id=pets.client_id
WHERE `clinic`='20'";
$result = $conn->query($query) or die($conn->error.__LINE__);

if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$firstname=stripslashes($row['first']);
$pet=stripslashes($row['pet_name']);
echo $firstname." - ".$pet."<br/>";
}
}
else {
echo 'NO RESULTS';
}

这段代码产生:

Name1 - Pet 1
Name1 - Pet 2
Name2 - Pet 1
Name2 - Pet 2
Name3 - Pet 1
Name4 - Pet 1

我需要的是:

Name1 - Pet 1, Pet 2
Name2 - Pet 1, Pet 2
Name3 - Pet 1
Name4 - Pet 1

但我找不到如何完成此任务。我明白为什么现在这样做是错误的。

我尝试将 pets.pet_name 连接为某些内容,但无法使其工作。接下来我应该尝试什么?

谢谢。

最佳答案

您需要将查询更改为:

SELECT cust.first, GROUP_CONCAT(pets.pet_name) AS pet_names
FROM cust
LEFT JOIN pets ON cust.id=pets.client_id
WHERE clinic = '20'
GROUP BY cust.id

它产生你想要的结果集;无需更改 PHP 代码。

查看 GROUP_CONCAT() 的文档功能查看其选项;默认情况下,它使用逗号 (',') 来连接值,也许您希望在逗号后面有一个空格。您还可以控制连接值的顺序。

关于PHP MySQL 表连接 - 仅回显标识符一次,然后是所有匹配的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28244624/

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