Py学习  »  DATABASE

mysql join返回多行,但php foreach需要单个记录[重复]

lio • 4 年前 • 197 次点击  

这个问题已经有了答案:

我有一个简单的连接查询:

select s.id, s.account_id, s.startdate, ss.skill_id, sk.skill_name 
from shyfts s 
   join shyfts_skills ss on ss.shyft_id = s.id 
   join skills sk on sk.id=ss.skill_id

这给了我预期的结果

id      account_id  startdate   skill_id    skill_name
19783   35          2018-10-10  68          Delivery
19783   35          2018-10-10  67          Cooking
28766   76          2018-10-18  68          Delivery

我的问题是我需要做一个循环(foreach在php中),但我只需要显示唯一的移位,所以按ID。正如您所看到的,移位ID 19783是重复的。当然,我可以做一个小组,但会有一个技能丢失(烹饪)。

我可以通过在foreach循环中添加另一个select来完成这项工作,但是在200多行上它需要太多的性能。

或者,可能类似于“如果当前$row['id']与前$row['id']不同,但我认为这是错误的编码。

我该怎么做??

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38183
 
197 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Juan Carlos Oropeza
Reply   •   1 楼
Juan Carlos Oropeza    5 年前

我想对于不显示重复项,您可以使用SELECT DISTINCT语句。

select distinct s.id, s.account_id, s.startdate, ss.skill_id, sk.skill_name 
from shyfts s 
   join shyfts_skills ss on ss.shyft_id = s.id 
   join skills sk on sk.id=ss.skill_id
Alex Tank
Reply   •   2 楼
Alex Tank    5 年前

尝试检查 GROUP_CONCAT(fieldName SEPARATOR ',') 这个函数,您可以只包含一个字段和OFC。使用分组依据。 可能是这样的 mysql join with multiple values in one column 这一个问题