猿问

Foreach 循环但打印一次具有多个值

所以我的数据库中有一个名为 的表"Clients",另一个名为"Pets". 它们通过关联表链接,这意味着一个"Clients"可以有两个"Pets"。


我使用FOREACH循环来显示我的客户和宠物,但是当客户有很多宠物时,我的 foreach 循环会打印所有内容,与客户有宠物的数量一样。


看这里

这是我的foreach循环


foreach ($files as $file) :

echo $file['address'];

endforeach

我的问题是我想让除"pets"( <?= $file['petName']; ?>) 之外的所有内容正常显示,并看到客户有 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'


牧羊人nacy
浏览 111回答 2
2回答

繁星淼淼

完美,这就是我想要的,非常感谢!这里是修改后的代码:SELECT *,&nbsp;GROUP_CONCAT(DISTINCT petName ORDER BY petName) AS petsNamesFROM clientsLEFT JOIN owners ON owners.idClients = clients.idClientsLEFT JOIN pets ON pets.idPets = owners.idPetsLEFT JOIN clientsdocs ON clientsdocs.idClients = clients.idClientsWHERE clients.idClients='$id'

慕尼黑的夜晚无繁华

您可以更改查询,例如:SELECT&nbsp; &nbsp; clients.*,&nbsp;&nbsp; &nbsp; GROUP_CONCAT(petName) AS petsNames # implode pets names s into 1 stringFROM clientsLEFT JOIN owners ON owners.idClients = clients.idClientsLEFT JOIN pets ON pets.idPets = owners.idPetsLEFT JOIN clientsdocs ON clientsdocs.idClients = clients.idClientsGROUP BY clients.idClients # this is group all client's data in single rowWHERE clients.idClients='$id';这不是解决方案,但可以为您提供最佳解决方案的想法。
随时随地看视频慕课网APP
我要回答