这些是我的数据库中的表
CREATE TABLE vehicles
(
id VARCHAR PRIMARY KEY,
make VARCHAR NOT NULL,
model VARCHAR NOT NULL,
)
CREATE TABLE collisions
(
id VARCHAR PRIMARY KEY,
longitude FLOAT NOT NULL,
latitude FLOAT NOT NULL,
)
CREATE TABLE vehicle_collisions
(
vehicle_id VARCHAR NOT NULL,
collision_id VARCHAR NOT NULL,
PRIMARY KEY (vehicle_id, collision_id)
)
所以我需要找到一个特定的碰撞标识符的车辆列表。我使用的是gorm。
我试着用一种
var vehicles []entities.Vehicles
err := r.db.Joins("JOIN vehicles as vh on vh.id=vehicle_collisions.vehicle_id").Where("vehicle_collisions.collision_id=?",
id).Find(&vehicles).Error
if err != nil {
fmt.Println(err)
}
但这让我犯错
ERROR: missing FROM-clause entry for table "vehicle_collisions" (SQLSTATE 42P01)
任何帮助都将不胜感激。
2条答案
按热度按时间nfeuvbwi1#
谢谢mkopriva,当您传递
&vehicles
(即[]entities.Vehicles
)以查找时,生成的查询将如下所示:这将是不正确的解决问题修改查询为:
6ie5vjzr2#
由于这个问题缺少一些细节,我试着猜测它们。我希望提供的答案与您相关!让我展示一下我这边的代码:
代码从结构体的定义开始。
请注意字段
Collisions
上的Gorm注解。添加一些数据后,查询应该非常简单:我们使用
Joins
方法从表vehicle_collisions
加载数据,并且在Find
方法中,我们仅过滤掉collision_id
等于"1"
的记录。如果这对你有帮助或者你需要别的东西,请告诉我!