Я пытаюсь получить название платформы на основе идентификатора игры.
У меня есть три таблицы, как показано ниже, и я пытаюсь ПРИСОЕДИНИТЬСЯ к ним, чтобы получить необходимый результат:
Games
Id | .....| .....|
---|------ ------|
1 | . | . |
2 | . | . |
3 | . | . |
4 | . | . |
Game_Platforms
Id |....|game_id| platform_id|...|
---------------------------------
1 | . | 1 | 1 |.. |
2 | . | 1 | 2 |.. |
3 | . | 3 | 3 |.. |
.. | . | 4 | 4 |.. |
Platforms
Id| ...|...| name |
---------------------|
1 | . | . | iOS |
2 | . | . | Android |
3 | . | . | Windows |
4 | . | . | SteamOS |
type Platforms struct {
Name string
}
var name []Platforms
query = 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: отсутствует запись FROM-предложения для таблицы "game_platforms"
Я думаю, что неправильно написал команды Joins, но это кажется логичным, возможно, я ошибаюсь.
Решение проблемы
В вашем запросе отсутствует 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)
Комментариев нет:
Отправить комментарий