【问题标题】:merge two queries from two tables as a one struct将来自两个表的两个查询合并为一个结构
【发布时间】:2018-09-21 03:05:29
【问题描述】:

我有一个名为 Ads 的结构

type Ads struct {
    ID      int `json:"id"`
    Subject string `json:"subject"`
    Phone   string `json:"phone"`
}

func GetAdsPostgres() (ads []Ads, err error) {
    ads = make([]Ads, 0)
    rows, err := db1.Query("Select ad_id, subject FROM ads limit 200 ")
    for rows.Next() {
        var ad Ads
        rows.Scan(&ad.ID, &ad.Subject)

        test := reflect.ValueOf(ad.ID)
        addd := test.Interface().(int)
        rows1, _ := db1.Query("Select phone FROM ads where ad_id=$1", addd)
        rows1.Scan(&ad.Phone)

        ads = append(ads, ad)
        rows1.Close()
    }

    if err = rows.Err(); err != nil {
        return
    }
    return
}

没有考虑加入表格,因为手机有多个枚举值,我必须在之后将它们重新定义为字段

【问题讨论】:

  • 您的if err = rows.Err(); err != nil { return } 完全没有必要。不需要if ... { return } return。只需return
  • @Flimzy for the phone 有一个枚举值:local、regional、international 和每个值,所以我创建了一个结构,其中包含电话枚举的所有字段,这就是我必须遵循此方法的原因跨度>
  • @dev_medo:这与我的观点无关。有一个“if x do y else do y”等同于“y”

标签: mysql postgresql go


【解决方案1】:

在第一个查询中也获取电话号码;不要重复自己。

db1.Query("Select ad_id, subject, phone FROM ads limit 200 ")

【讨论】:

  • 手机有一个枚举值:local、regional、international 每个值,所以我创建了一个结构,其中包含手机枚举的所有字段,这就是为什么我必须遵循这种方法
猜你喜欢
  • 2013-11-22
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多