0

我正在尝试使用带有 3 个表的内部联接(例如表 A 和 B)从 DB 获取输出。

输出结构

type C struct {
    A         A         `json:"A"`
    B         B         `json:"B"`
    SecID    int64        `json:"section_id"`
    SecName  string       `json:"section_name"`
}

type A struct {
    AID         int64           `json:"aid"`
    Name       string          `json:"name"`
    Des        string          `json:"des"`
    Price      string          `json:"price"`
}

type B struct {
    BID         int64           `json:"bid"`
    Answer     string         `json::answer"`
    Score      int16           `json:"score"`
}

数据库查询

var cs []C
rows, err := db.Query(sqlStatement, RequestBody.tID)
for rows.Next() {
    var c C
    err = rows.Scan(&c.A.ID, &c.A.Name, &c.A.Des, &c.A.Price, &c.A.Price, &c.B.ID, &c.B.Answer, &c.B.Score, &c.SecID, &c.SecName)
     cs = append(cs, c)

上面的代码产生以下输出:

[
  {
    "a": {
      "aid": 1,
      "name": "XXXXXX",
      "description": "addd kdjd a jdljljlad",
      "price": "10",
    },
    "section_id": 1,
    "section_name": "personal details",
    "b": {
      "bid": 1,
      "answer": "adfdf d fd d f",
      "score": 0
    }
  },
  {
    "a": {
      "aid": 1,
      "name": "XXXXXX",
      "description": "addd kdjd a jdljljlad",
      "price": "10",
    },
    "section_id": 1,
    "section_name": "personal details",
    "b": {
      "bid": 2,
      "answer": "adfdf d fd d f",
      "score": 10
    }
  }
]

但是我试图将单个字段中的字段“b”与字典列表合并,并且在重复值时只写入一次“a”字段。

[
  {
    "a": {
      "aid": 1,
      "name": "XXXXXX",
      "description": "addd kdjd a jdljljlad",
      "price": "10",
      
    },
    "b": [
      {
        "section_id": 1,
        "section_name": "personal details",
        "bid": 1,
        "answer": "adfdf d fd d f",
        "score": 0
      },
      {
        "section_id": 1,
        "section_name": "personal details",
        "bid": 2,
        "answer": "adfdf d fd d f",
        "score": 10
      }
    ]
  }
]

尝试更改结构但似乎不起作用。DB 详细信息:表 A(AID、姓名、Des、地点)表 B(BID、答案、分数)

询问:

select * from A a
inner join temp_table tt on tt.aid = a.aid
inner join B b on b.bid = tt.bid
 where a.aid=1;
4

0 回答 0