来自一个 table 数据的 laravel 中的排名查询
rank query in laravel from one table data
目前它按顺序获得比赛时间,但我想将 user_id 列组合在一起,但要确保将其组合在一起时,保持最快的 recorded_time。
到目前为止我从查询中获得的示例
User_id | race_id | recorded_time | stroke |
__________________________________________
2 | 2 | 10.03 | fly |
____________________________________________
1 | 3 | 12.98 | fly |
____________________________________________
2 3 13.58 | fly |
这是给出结果的代码
$query->where('race_history.stroke', '=', $stroke)
->orderBy('recorded_time', 'ASC')->get();
这就是我想要的 return
User_id | race_id | recorded_time | stroke |
__________________________________________
2 | 2 | 10.03 | fly |
____________________________________________
1 | 3 | 12.98 | fly |
____________________________________________
我已经尝试了下面的代码,但它并没有花费最快的记录时间
$query->where('stroke', '=', $stroke)
->orderBy('recorded_time', 'ASC')
->groupBy('user_id')->get();
而是产生这个
User_id | race_id | recorded_time | stroke |
__________________________________________
1 | 3 | 12.98 | fly |
____________________________________________
2 | 3 | 13.58 | fly |
____________________________________________
所以它按 user_id 分组,但没有用最快的记录时间
我已经尝试了很多任何人都可以提供帮助的方法这是一个原始查询来获得我想要的东西我会使用它但是 AND 距离不喜欢这样..
$total = DB::select(DB::raw('
SELECT *, min(recorded_time) as time
FROM race_history
WHERE stroke = "' . $stroke . '" AND distance="' . $distance . '"
GROUP BY user_id
ORDER BY min(recorded_time) ASC
'));
这是原始查询,因为我不知道 laravel 语法
SELECT `user_id`, `race_id`, min(`recorded_time`) AS `recorded_time`, `stroke`
FROM `race_history`
WHERE `stroke` = 'fly'
GROUP BY `user_id`
ORDER BY `recorded_time` ASC
目前它按顺序获得比赛时间,但我想将 user_id 列组合在一起,但要确保将其组合在一起时,保持最快的 recorded_time。
到目前为止我从查询中获得的示例
User_id | race_id | recorded_time | stroke |
__________________________________________
2 | 2 | 10.03 | fly |
____________________________________________
1 | 3 | 12.98 | fly |
____________________________________________
2 3 13.58 | fly |
这是给出结果的代码
$query->where('race_history.stroke', '=', $stroke)
->orderBy('recorded_time', 'ASC')->get();
这就是我想要的 return
User_id | race_id | recorded_time | stroke |
__________________________________________
2 | 2 | 10.03 | fly |
____________________________________________
1 | 3 | 12.98 | fly |
____________________________________________
我已经尝试了下面的代码,但它并没有花费最快的记录时间
$query->where('stroke', '=', $stroke)
->orderBy('recorded_time', 'ASC')
->groupBy('user_id')->get();
而是产生这个
User_id | race_id | recorded_time | stroke |
__________________________________________
1 | 3 | 12.98 | fly |
____________________________________________
2 | 3 | 13.58 | fly |
____________________________________________
所以它按 user_id 分组,但没有用最快的记录时间
我已经尝试了很多任何人都可以提供帮助的方法这是一个原始查询来获得我想要的东西我会使用它但是 AND 距离不喜欢这样..
$total = DB::select(DB::raw('
SELECT *, min(recorded_time) as time
FROM race_history
WHERE stroke = "' . $stroke . '" AND distance="' . $distance . '"
GROUP BY user_id
ORDER BY min(recorded_time) ASC
'));
这是原始查询,因为我不知道 laravel 语法
SELECT `user_id`, `race_id`, min(`recorded_time`) AS `recorded_time`, `stroke`
FROM `race_history`
WHERE `stroke` = 'fly'
GROUP BY `user_id`
ORDER BY `recorded_time` ASC