2

我有 2 张桌子。部门和员工如下:

    部门
    |-------------------------|
    | 身份证 | 姓名 |
    |---------|------------|
    | 10 | 管理员 |
    |---------|------------|
    | 11 | 资讯科技 |
    |---------|------------| 
员工 |------------|--------------| | 身份证 | 姓名 | 部门ID | |---------|------------|--------------| | 1 | 彼得 | 10 | |---------|------------|--------------| | 2 | 斯科特 | 11 | --------------------------------------

我需要每个部门的 JSON 详细信息,如下所示:

|----------------------|------------------------------------------------------------ |
|   DepartmentId       |   JSONDeatails                                              |
|--------------------- |------------------------------------------------------------ |
|   10                 |{"id": 10,"name": "Admin","Emp": [{"Id": 1,"name": "peter"}]}|
|----------------------|-------------------------------------------------------------|
|   11                 |{"id": 11,"name": "IT","Emp":[{"Id": 2,"name": "scott"}]}    |
|----------------------|-------------------------------------------------------------|

我尝试了以下查询,该查询将整个表数据作为一个 JSON 返回。

 SELECT     D.Id, D.name, Emp.Id, Emp.Name FROM Department D
 LEFT JOIN Employee Emp ON D.Id= Emp.DepartmentId FOR JSON AUTO

我收到如下回复:

JSON_F52E2B61-18A1-11d1-B105-00805F49916B
[{"id": 10,"name": "Admin","Emp": [{"Id": 1,"name": "peter"}]},{"id": 11,"name": "IT","Emp":[{"Id": 2,"name": "scott"}]}]
4

1 回答 1

2

经过多次试验,我可以找出为每条记录提供 JSON 的查询。这里是:

SELECT D.Id, 
     (SELECT Di.Id, Di.name ,Emp.Id, Emp.Name FROM Department Di 
        LEFT JOIN Employee Emp ON Di.Id= Emp.DepartmentId 
        WHERE Di.Id = D.id FOR JSON AUTO) AS Details 
FROM Department D
于 2020-05-11T14:59:27.963 回答