簡體   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