Select('a.bid, a.bname, a.acct_bal, a.buy_Sum_Amt, a.stmt_amt, a.admin_uid, a.user_name, a.status'). Joins("left join business_bal as s on s.bid=a.bid"). Joins("left join user_base as u on u.uid=a.admin_uid"). Joins("left join business_settlement as b on b.uid=a.bid")
时间: 2024-04-18 22:28:46 浏览: 105
这段代码是一个查询语句,用于从数据库中获取商家的详细信息,并关联了商家账户余额、管理员用户、商家结算信息。
它选择了商家的一些字段信息,包括商家ID(bid)、商家名称(bname)、账户余额(acct_bal)、购买总金额(buy_Sum_Amt)、结算金额(stmt_amt)、管理员用户ID(admin_uid)、管理员用户名(user_name)和状态(status)。
通过左连接(left join)关联了表business_bal,使用别名s来表示business_bal,并且连接条件是s.bid=a.bid。这样可以获取商家的账户余额信息。
接着又使用了左连接关联了表user_base,使用别名u来表示user_base,并且连接条件是u.uid=a.admin_uid。这样可以获取商家对应的管理员用户信息。
最后,又使用了左连接关联了表business_settlement,使用别名b来表示business_settlement,并且连接条件是b.uid=a.bid。这样可以获取商家的结算信息。
这个查询的目的是获取商家的详细信息,包括账户余额、管理员用户信息和结算信息。通过关联查询,可以获取到与商家相关联的其他表的信息。
相关问题
Select('a.bid, a.bname, a.acct_bal, a.buy_Sum_Amt, a.stmt_amt, a.admin_uid, a.user_name, a.status'). Joins("left join business_bal as s on s.bid=a.bid"). Joins("left join user_base as u on u.uid=a.admin_uid"). Joins("left join business_settlement as b on b.uid=a.bid")待结算需要查询stmt_status字段为1的stmt_amt字段的和
若要查询待结算商家的结算金额总和(stmt_amt字段),需要在原有的查询语句基础上加上stmt_status字段等于1的筛选条件,并使用sum函数对stmt_amt字段进行求和。修改后的代码如下:
```python
Select('a.bid, a.bname, a.acct_bal, a.buy_Sum_Amt, sum(a.stmt_amt) as total_stmt_amt, a.admin_uid, a.user_name, a.status').
Joins("left join business_bal as s on s.bid=a.bid").
Joins("left join user_base as u on u.uid=a.admin_uid").
Joins("left join business_settlement as b on b.uid=a.bid").
Where("b.stmt_status = ?", 1)
```
在原有代码的基础上,使用Where条件筛选出stmt_status字段等于1的记录,并使用sum函数对stmt_amt字段进行求和,将结果命名为total_stmt_amt。这样可以获取待结算商家的结算金额总和。
func AppOperateRecharge(a *decorator.ApiBase) error { logger.AccessLogger.Info("AppOperateRecharge...") resp := adminStruct.BusinessOrderRecharge{} a.Ts.Table("business_base as a"). Select("s.bid, a.bname, s.acct_bal,s.buy_sum_amt, sum(CASE WHEN b.stmt_status = 1 THEN a.stmt_amt ELSE 0 END) as unpaid_amt, sum(CASE WHEN b.stmt_status = 0 THEN a.stmt_amt ELSE 0 END) as stmt_amt, a.admin_uid, u.user_name, a.status"). Joins("left join business_bal as s on s.bid=a.bid"). Joins("left join user_base as u on u.uid=a.admin_uid"). Joins("left join business_settlement as b on b.bid=a.bid"). Where("a.bid=?", a.Token.LinkId). Group("a.bid"). Scan(resp) return a.ReturnSuccessCustomResponse(resp) } type Statustype BusinessOrderRecharge struct { Bid int64 json:"bid" // 商家ID Bname string json:"bname" // 商家名称 Acct_Bal int64 json:"acct_bal" //账面余额 Buy_sum_amt int64 json:"buy_sum_amt" //采购货款 Unpaid_amt int64 json:"unpaid_amt" //待结算货款 Stmt_amt int64 json:"stmt_amt" //已结算金额 Admin_uid int64 json:"admin_Uid" //管理员 Admin_name string json:"admin_name" //管理员姓名 Status string json:"status" //商家状态 }查看表商家状态字段Status1为返回入驻成功2为待审核并传入结构体Status中
这段代码是一个名为AppOperateRecharge的函数,它接受一个名为a的指向decorator.ApiBase类型的指针作为参数,并返回一个错误。函数内部首先打印日志信息"AppOperateRecharge...",然后定义一个名为resp的adminStruct.BusinessOrderRecharge类型的变量。接下来,它使用a.Ts.Table方法选择表"business_base"并将查询结果存储到resp变量中。查询语句使用了多个左连接(left join)来连接多个表,并通过Where子句指定了条件"a.bid=?",其中a.Token.LinkId表示查询条件的值。最后,通过Group方法对结果进行分组,并使用Scan方法将结果存储到resp变量中。
函数最后使用a.ReturnSuccessCustomResponse方法将resp作为参数返回。
在这段代码中,adminStruct.BusinessOrderRecharge结构体定义了多个字段,包括Bid、Bname、Acct_Bal等,用于存储查询结果的不同列的值。其中Status字段表示商家状态。根据你提供的信息,商家状态字段的值1表示返回入驻成功,值2表示待审核。这些状态值会被传入到BusinessOrderRecharge结构体的Status字段中。
阅读全文