我正在嘗試根據游戲 ID 獲取平臺名稱。我有如下三個表,我正在嘗試加入它們以獲得所需的結果: GamesId | .....| .....|---|------ ------|1 | . | . |2 | . | . |3 | . | . |4 | . | . | Game_PlatformsId |....|game_id| platform_id|...|---------------------------------1 | . | 1 | 1 |.. |2 | . | 1 | 2 |.. |3 | . | 3 | 3 |.. |.. | . | 4 | 4 |.. | PlatformsId| ...|...| name |---------------------|1 | . | . | iOS |2 | . | . | Android |3 | . | . | Windows |4 | . | . | SteamOS |type Platforms struct { Name string}var name []Platformsquery = postgres.Db().Select("name"). Joins("JOIN games ON games.id = game_platforms.game_id"). Joins("JOIN game_platforms ON game_platforms.platform_id = platforms.id"). Where("games.id = 1").Find(&name)我希望獲得平臺名稱,但出現錯誤:pq:缺少表“game_platforms”的 FROM 子句條目我認為我寫的連接命令不正確,但看起來合乎邏輯,也許我錯了。
2 回答

幕布斯7119047
TA貢獻1794條經驗 獲得超8個贊
您的查詢缺少該FROM
子句。
我假設您想從表中選擇數據platforms
。如果是,那么(根據您的代碼)您應該與第game_platforms
一個然后與games
.
query = postgres.Db().Select("name"). Find("platforms"). // <------ this one Joins("JOIN game_platforms ON game_platforms.platform_id = platforms.id"). Joins("JOIN games ON games.id = game_platforms.game_id"). Where("games.id = 1").Find(&name)

慕碼人2483693
TA貢獻1860條經驗 獲得超9個贊
所以我的問題的答案并不是沒有@novalagung的支持,
歸功于他,所以我需要將查詢更改為如下所示
query = postgres.Db().Select("name"). Joins("JOIN game_platforms ON game_platforms.platform_id = platforms.id"). Joins("JOIN games ON games.id = game_platforms.game_id"). Where("games.id = 1").Find(&name)
但是我有一個錯誤,說pq: 列引用“name”不明確
但這是我的錯,因為我沒有指定有問題的所有表,因此需要做一些小的更改來解決此錯誤是Select("platforms.name ”)。
- 2 回答
- 0 關注
- 174 瀏覽
添加回答
舉報
0/150
提交
取消