【发布时间】:2021-09-24 12:48:28
【问题描述】:
我有两个表,在查询 Product 表并为每个单独的产品显示时,我试图找出一种方法来获取 Order 表中 Ordered 列的 SUM。
这是我目前获取所有产品的方式,我想扩展它以在查询时计算字段,或者如果可能的话,使用 PostgreSQL 的生成列函数。以为我不确定它是否可以在这种情况下与外键一起使用。
type Product struct {
gorm.Model
Orders []Order `gorm:"ForeignKey:ProductID" json:"orders"`
}
type Order struct {
gorm.Model
ProductID uint `json:"productID"`
Ordered int8 `gorm:"default:0" json:"ordered"`
}
func GetProducts(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var products []Product
db.Preload("Orders").Find(&products)
json.NewEncoder(w).Encode(products)
}
我认为 SQL 查询是这样的(不太了解 SQL)
select *, ( select sum(ordered) from orders where product_id = products.id) ordered from products;
【问题讨论】: