2

我的数据库中有两个表,大致如下所示

客户

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

如果在某个地方之前有人问过这个问题,我会道歉,但上周我一直在搜索,但没有找到太多帮助。

4

1 回答 1

0
SELECT e.*, c.other_data FROM Employee e
INNER JOIN Client c ON e.client_id = c.id

因此,您最终得到的是在一个查询中获取的两个表中的所有信息。因此,数据将是:

     id        client_id    Employee    other_data
     1             1          Fred        data 1
     2             1          Jim         data 1
     3             3          Peter       data 3
     4             4          Fred        data 4
     5             4          Peter       data 4
     6             4          James       data 4
于 2012-09-30T12:16:24.890 回答