sql - 如何使用 ozzo-dbx 包加入 PostgreSQL?

标签 sql postgresql rest go

我正在用 Go 创建 REST API。我想根据请求发送响应,其中包含关于对象的数据+关于它的一些子数据,这是另一个表。所以基本上在表之间进行 JOIN。

我正在使用这个包:https://github.com/go-ozzo/ozzo-dbx

在文档中,我找不到 JOIN 示例。

你能帮我解决这个问题吗?

我的代码:

这很简单 SELECT * FROM cars

func (dao *BikesDAO) Query(rs app.RequestScope, offset, limit int) ([]models.Bikes, error) {
bikes := []models.Bikes{}
err := rs.Tx().Select().OrderBy("name").Offset(int64(offset)).Limit(int64(limit)).All(&bikes)
return bikes, err
}

我的结构:

type Bikes struct {
  Id                     int     `json:"id" db:"id"`
  Name                   string  `json:"name" db:"name"`
  Rating                 float64 `json:"rating" db:"rating"`
  PriceValue             uint    `json:"price_value" db:"price_value"`
  Users                  Users
}

type Users struct {
  Id             string  `json:"id" db:"id"`
  Username       string  `json:"username" db:"username"`
  Name           string  `json:"name" db:"name"`
  Phone          string  `json:"phone" db:"phone"`
  Email          string  `json:"email" db:"email"`
}

有了这个我想做 SELECT * FROM cars INNER JOIN users ON cars.user_id = users.id 并得到以下结果:

{
 "id":12, 
 "name":"Toyota",
 "rating":4,
 "price_value":4000,
 "users": {
            "id":64,
            "Username":"Tom32",
            "Name":"Tom",
            "Phone":"325345345",
            "Email":"tom@gmail.com"
           }
 }

最佳答案

在深入研究 dbx 包代码后,我发现它非常简单:

err := rs.Tx().Select().InnerJoin("table2", dbx.NewExp("table2.id = table1.id").OrderBy("name").Offset(int64(offset)).Limit(int64(limit)).All(&bikes)

关于sql - 如何使用 ozzo-dbx 包加入 PostgreSQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44928638/

相关文章:

mysql - 在 MySQL JOIN 结果中像主键一样组合

node.js - 内部加入删除查询,Node JS,Knex JS

node.js - Windows 7 上的 npm install Restify 错误?

json - Nodejs api 的 nginx 配置不返回/api 调用

javascript - 如何将数据发布到 JsonPlaceholder 假服务器?

php - 对这些术语查询使用 ORDER BY

sql - 从两个表中删除行

postgresql - 如何在 jmeter 中通过隧道配置 PostgreSQL 数据库

sql - 使用触发器将 postgres SQL 插入语句拆分为 2 个表

sql - 无法绑定(bind)多部分标识符?