Php Foreach循环,但使用多个值打印一次
因此,我的数据库中有一个名为Php Foreach循环,但使用多个值打印一次,php,Php,因此,我的数据库中有一个名为“Clients”的表和另一个名为“Pets”。 它们由一个关联表链接,这意味着一个“客户机”可以有两个“宠物” 我正在使用一个FOREACH循环来显示我的客户机和宠物,但是当客户机有很多宠物时,我的FOREACH循环会打印所有内容,就像客户机有宠物一样多 这是我的foreach循环 foreach ($files as $file) : echo $file['address']; endforeach 我的问题是,我希望所有东西都能正常显示,除了“pets”(
“Clients”
的表和另一个名为“Pets”
。
它们由一个关联表链接,这意味着一个“客户机”
可以有两个“宠物”
我正在使用一个FOREACH
循环来显示我的客户机和宠物,但是当客户机有很多宠物时,我的FOREACH循环会打印所有内容,就像客户机有宠物一样多
这是我的foreach
循环
foreach ($files as $file) :
echo $file['address'];
endforeach
我的问题是,我希望所有东西都能正常显示,除了“pets”
(
)之外,并确保客户端有2只宠物
谢谢你的帮助
我的SQL查询
SELECT *
FROM clients
LEFT JOIN owners ON owners.idClients = clients.idClients
LEFT JOIN pets ON pets.idPets = owners.idPets
LEFT JOIN clientsdocs ON clientsdocs.idClients = clients.idClients
WHERE clients.idClients='$id'
您可以更改查询,如下所示:
SELECT
clients.*,
GROUP_CONCAT(petName) AS petsNames # implode pets names s into 1 string
FROM clients
LEFT JOIN owners ON owners.idClients = clients.idClients
LEFT JOIN pets ON pets.idPets = owners.idPets
LEFT JOIN clientsdocs ON clientsdocs.idClients = clients.idClients
GROUP BY clients.idClients # this is group all client's data in single row
WHERE clients.idClients='$id';
这不是解决方案,但可以为您提供最佳解决方案的想法。完美,这就是我想要的,非常感谢 下面是修改后的代码:
SELECT *,
GROUP_CONCAT(DISTINCT petName ORDER BY petName) AS petsNames
FROM clients
LEFT JOIN owners ON owners.idClients = clients.idClients
LEFT JOIN pets ON pets.idPets = owners.idPets
LEFT JOIN clientsdocs ON clientsdocs.idClients = clients.idClients
WHERE clients.idClients='$id'
如果相关,请在SQL查询后附上问题。如果不是,请删除标记。@SlavaRozhnev我编辑了它,“owner”是我的关联表,“clientsdocs”是另一个表,我们不需要它来解决这个问题。您可以展示一个有代表性的
$files
-使用var\u导出($files)