我正在嘗試執行以下查詢MySQL通過此查詢,可以獲取比賽中汽車的分類,以及這些汽車的駕駛員查詢:SELECT * FROM results INNER JOIN cars ON results.idCar = cars.IdINNER JOIN drivers ON cars.id = drivers.idCarWHERE idSesson = 7 ORDER BY classificationASC此查詢返回 2 個模型:結果、會話。并返回每輛車的駕駛員列表問題是它返回每個飛行員的結果,也就是說,相同的結果可以出現3次,只是飛行員不同,我想在一個JSONArray使用此查詢,我使用此實現 result := structs.Result{} lastResult := structs.Result{} results := []structs.Result{} driver := structs.Driver{} drivers := []structs.Driver{} for rows.Next() { var sesson structs.Sesson var car structs.Car err = rows.Scan(&result.Id, &sesson.Id, &car.Id, &result.Type, &result.Classification, &result.Category, &car.Id, &car.IdTeam, &car.Name, &car.Number, &car.Model, &car.Manufacturer, &car.TyerBrand, &car.CarImage, &driver.Id, &driver.IdCar, &driver.Name, &driver.Age, &driver.DateOfBrith, &driver.Country, &driver.FlagCountry, &driver.Facebook, &driver.Twitter, &driver.Website, &driver.Picture) if err != nil { fmt.Printf("Error in scan") panic(err.Error()) } result.Sesson = sesson result.Car = car drivers = append(drivers, driver) // i stor the drivers in one array // check if end the duplicated, info if (lastResult.Id != 0 && lastResult.Id != result.Id) { results = append(results, lastResult) } // store the last result lastResult = result } // add last result results = append(results, lastResult) // save the drivers in JSONArray in each jsonObject for i := 0; i < len(results); i++ { for j := 0; j < len(drivers); j++ { if (results[i].Car.Id == drivers[j].IdCarro) { results[i].Drivers = append(results[i].Drivers, drivers[j]) } } } // transform data in json jsonData, err := json.Marshal(results) if err != nil { fmt.Printf("error in marsahl") } db.Close() return jsonData這是一個好的實現嗎?對于這個問題??
1 回答

手掌心
TA貢獻1942條經驗 獲得超3個贊
您可以做的幾件事
修復結果變量的作用域,將其移動到循環內,它不會在其他任何地方使用
無需創建會話和汽車變量,而是直接掃描到結果變量中
使用映射刪除嵌套的 for 循環將節省獲得線性復雜性的時間
- 1 回答
- 0 關注
- 103 瀏覽
添加回答
舉報
0/150
提交
取消