MySQL从多个子行查询相关实体到json数组

时间:2018-05-02 11:18:49

标签: mysql sql json

这是我的数据库设计,具有多对多关系

table Tournament
TournamentId int
name varchar(45)

table User
UserId int
name varchar(45)

table Tournament_Users
Tournament_Id int
User_Id int

我试图以JSON格式返回所有比赛的锦标赛用户列表。我不确定在查询中是否可以这样做,或者这是一个javascript工作?我试图遵循这个Returning child rows formatted as JSON in SQL Server queries,但我在示例中淹死了。

这是我当前的查询

SELECT t.TournamentId, t.Name as tourName, u.UserId, u.Name as userName
FROM  Tournament_Users tu
LEFT JOIN  Tournaments t ON tu.Tournament_Id = t.TournamentId
LEFT JOIN  Users u ON u.UserId = tu.User_Id

Query result

因此,作为json结果,这看起来像这样:

Json result 1

对于客户来说,这似乎很难。如何将其转换为这样的格式?

Json result 2

SQLFIDDLE:http://sqlfiddle.com/#!9/9bc2ebf/3

2 个答案:

答案 0 :(得分:1)

尝试类似:

AFunctionName:
  handler: src/index.handler
  description: desc
  environment: ${file(environment.yml)}
  events:
    - http:
        method: any
        path: /api/{proxy+}
        authorizer:
          arn: arn:aws:cognito-idp:eu-west-1:123456:userpool/eu-west-1_123456

请参阅db-fiddle

答案 1 :(得分:0)

如果您使用的是mysql 8.0,那么

SELECT json_object(
'TournamentId', t.TournamentId ,'tourName', t.Name ,'UserId' ,u.UserId, 'UserName' ,u.Name)
FROM  Tournament_Users tu
LEFT JOIN  Tournaments t ON tu.Tournament_Id = t.TournamentId
LEFT JOIN  Users u ON u.UserId = tu.User_Id 

您可以参考 - https://dev.mysql.com/doc/refman/8.0/en/json-creation-functions.html