为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
牧羊人nacy 2024-01-19 10:46:39
所以我的数据库中有一个名为 的表"Clients",另一个名为"Pets". 它们通过关联表链接,这意味着一个"Clients"可以有两个"Pets"。我使用FOREACH循环来显示我的客户和宠物,但是当客户有很多宠物时,我的 foreach 循环会打印所有内容,与客户有宠物的数量一样。看这里这是我的foreach循环foreach ($files as $file) :echo $file['address'];endforeach我的问题是我想让除"pets"( <?= $file['petName']; ?>) 之外的所有内容正常显示,并看到客户有 2 只宠物。像这样 :感谢您的帮助 !我的 SQL 查询SELECT *FROM 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'
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

完美,这就是我想要的,非常感谢!


这里是修改后的代码:


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'


查看完整回答
反对 回复 2024-01-19
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

您可以更改查询,例如:


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';

这不是解决方案,但可以为您提供最佳解决方案的想法。


查看完整回答
反对 回复 2024-01-19
  • 2 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信