2015-04-07 5 views
0

На данный момент он получает время гонки в порядке, но я хочу объединить столбец user_id вместе, но чтобы убедиться, что когда он группирует его вместе, выполняется самое быстрое записанное время.запрос ранга в laravel из одной таблицы данных

Пример того, что я до сих пор от запроса

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(); 

Это то, что я хочу, чтобы вернуть

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, но не принимать его быстро записанную время

Я пытался так много способов, кто может помочь это сырье запрос, чтобы получить что я хочу, я бы использовал это, но расстояние И не понравилось.

$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 
')); 
+0

Ваша проблема для меня не совсем понятна. Что * точно * вы хотите вернуть? – Ravan

+0

Ive обновил мое сообщение .... Все, что я хочу сделать, это группировать запрос по столбцу user_id и принимать самое быстрое записанное время, когда столбец столбца = летать –

+0

Не можете ли вы использовать 'min (registered_time)'? См. [This] (http://laravel.com/docs/5.0/queries#aggregates). – Ravan

ответ

0

Вот необработанный запрос, поскольку я не знаю 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 
Смежные вопросы