我正在玩一个游戏,我有一些images
,每个图像有一些keywords
,每个关键字都有一个分数。
我想通过gameId
获得所有图像,并且是关键字(带分数)
我的数据库结构如下:
游戏
- id
图像
- id
- 游戏ID
- 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.*值