我的数据库中有两个表,大致如下所示
客户
id | other data
1 | data 1
2 | data 2
3 | data 3
4 | data 4
分配的员工
id | clientid | employee
1 | 1 | Fred
2 | 1 | Jim
3 | 3 | Peter
4 | 4 | Fred
5 | 4 | Peter
6 | 4 | James
有没有办法从员工表中返回包含所有员工记录的客户表?理想情况下,我想要行的 id 和员工姓名,所以我认为我不能使用 GROUP_CONCAT 来收集多于一列。也不能保证员工表中的每个客户总是有一个条目,因此它需要为这些客户返回空/空结果。
到目前为止,我已经尝试了两种在 php 中实现这一点的方法,两种方法都非常低效。
(A) 第一个是在第一个连接的中途有效地建立一个新的数据库连接,以返回与该客户端 ID 关联的员工列表,但显然这会导致仅针对一个查询建立大量数据库连接。
(B) 第二个是在代码开头将整个员工表拉入一个数组,并在该数组中搜索以提取与该客户 ID 相关的行,然后将员工姓名和行 ID 放入其中。随着时间的推移,这最终会立即将一个相当大的数组转储到 php 中。
有没有办法只使用一个 SQL 查询来解决这个问题?我并不是那么在意数据是如何出来的,因为我确信我可以在另一端的 php 中对其进行排序,但可能类似于以下内容
结果
id | other data | employees
1 | data 1 | 1,Fred;2,Jim
2 | data 2 |
3 | data 3 | 3,Peter
4 | data 4 | 4,Fred;5,Peter;6,James
如果在某个地方之前有人问过这个问题,我会道歉,但上周我一直在搜索,但没有找到太多帮助。