繁体   English   中英

MySQL:从多个表中选择嵌套列表

[英]MySQL: Select nested list from multiple tables

我正在开发一个有一些images的游戏,其中每个图像都有一些keywords ,每个关键字都有一个分数。

我想获取所有图像,它是gameId的关键字(带有分数)

我的数据库结构是这样的:

游戏类

  • ID

图片

  • ID
  • gameId
  • imageUrl

关键词

  • 关键词
  • 得分
  • imageId

我想要一个看起来像这样的JSON响应:

{
    gameId: 1,
    images: [
        {
            imageId: 1,
            keywords: [
                {
                    keyword: "keyword1",
                    score: 1234
                }...
            ]
        }...
    ]
}

我的SQL查询如下所示:

SELECT g.*, (SELECT i.*, kw.* 
FROM image i LEFT OUTER JOIN keywords kw on kw.imageId=i.id 
where i.gameId = g.id) as images
FROM games g LEFT OUTER JOIN users u on u.id=g.byUser WHERE g.id = 1

但是我得到这个错误:

1241-操作数应包含1列

我究竟做错了什么? 我不能在响应中嵌套一个数组吗?

不,您不能在选择列表中嵌套数组。

也许您需要这样:

SELECT g.*, i.*, kw.* 
FROM games g LEFT OUTER JOIN users u on u.id=g.byUser 
             LEFT OUTER JOIN image i on i.gameId = g.id 
             LEFT OUTER JOIN keywords kw on kw.imageId = i.id
WHERE g.id = 1;

但是在某些行中会有额外的g。*值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM