2015-03-20 6 views
0

В настоящее время я собираю время прохождения круга в базе данных sql и испытываю трудности с извлечением драйверов с самыми быстрыми laptimes!Группа SQL, используя отдельный столбец

Структура выглядит следующим образом!

CREATE TABLE IF NOT EXISTS `leaderboard` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`driver` varchar(50) NOT NULL, 
`car` varchar(50) NOT NULL, 
`best` double NOT NULL, 
`guid` bigint(255) NOT NULL, 
`server_name` varchar(255) NOT NULL, 
`track` varchar(55) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `driver` (`driver`), 
    KEY `server_name` (`server_name`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1213 ; 

Пример данных

INSERT INTO `leaderboard` (`id`, `driver`, `car`, `best`, `guid`, `server_name`, `track`) VALUES 
(1, 'dave.38', 'bmw_m3_e30', 88.379, 76561198084629688, 'A++%21+A++%21+------+Saturdaynightracing.tk+-+%5BRACE-SERVER%5D+-+%5BMagione%5D+%23SNR', 'magione'), 
(2, 'Gabriel Porfírio', 'bmw_m3_e30', 87.318, 76561197987062834, 'A++%21+A++%21+------+Saturdaynightracing.tk+-+%5BRACE-SERVER%5D+-+%5BMagione%5D+%23SNR', 'magione'), 
(3, 'xX_VEGA_Xx', 'bmw_m3_e30', 88.23, 76561198182074333, 'A++%21+A++%21+------+Saturdaynightracing.tk+-+%5BRACE-SERVER%5D+-+%5BMagione%5D+%23SNR', 'magione'), 
(4, 'dave.38', 'bmw_m3_e30', 88.379, 76561198084629688, 'A++%21+A++%21+------+Saturdaynightracing.tk+-+%5BRACE-SERVER%5D+-+%5BMagione%5D+%23SNR', 'magione'), 
(5, 'Gabriel Porfírio', 'bmw_m3_e30', 87.318, 76561197987062834, 'A++%21+A++%21+------+Saturdaynightracing.tk+-+%5BRACE-SERVER%5D+-+%5BMagione%5D+%23SNR', 'magione'); 

Теперь я пытаюсь разобраться водителей с лучшим временем, используя колонку best, используя следующий SQL, но это выглядит так, будто несколько раз отбрасываются, сочетание рода и порядок не работает.

SELECT DISTINCT guid, car, best, driver FROM `leaderboard` WHERE `server_name` like '%%' AND `track` = 'magione' GROUP BY(driver) ORDER BY `best` * 1 LIMIT 10 

Пожалуйста, помогите, это сводит меня с ума!

+2

Весь запрос не работает правильно. Пожалуйста, отредактируйте свой вопрос с результатами, которые вы ищете. –

ответ

0

Некоторые поля в данных не очень понятно, поэтому я сделал такие предположения:

  • guid означает GUID водителя (потому что это то же самое для того же драйвера в ваших данных).
  • car тот же самый для того же водителя.

С этими предположениями можно использовать простые GROUP BY, чтобы получить результаты, которые вам нужны:

SELECT driver, car, MIN(best) as best_time, guid 
FROM leaderboard 
WHERE `server_name` like '%%' AND `track` = 'magione' 
GROUP BY driver, car, guid 
ORDER BY MIN(best)