Как получить максимальное значение (colName), где colName имеет тип TimeStamp в mySQL - PullRequest
0 голосов
/ 10 марта 2011

У меня следующая структура таблицы enter image description here и следующие данные в этой таблице enter image description here Теперь я хочу сделать запрос таким образом, чтобы у меня были значения всех столбцов + значение max (currenttime)для определенного game_id.

я выполняю следующий запрос SELECT _id, game_id, inning_id, scoretype, oponentonescore, oponenttwoscore, currenttime, MAX (currenttime) AS последний ОТ game_scores WHERE game_id = '2268'

и в результате я получаю только одну строку, как показано в следующем результате enter image description here Но я хочу, чтобы все строки соответствовали критериям (т. Е. Идентификатор игры 2268)

Как составить запрос для достижения этой цели?

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 10 марта 2011

Ваш MAX() является функцией агрегатного типа и получает одно значение для нескольких строк.

Поэтому удалите его и используйте что-то подобное с PHP ...

$maxTime = 0;

foreach($rows as $row) {
   $maxTime = max($maxTime, strtotime($row['currenttime']));
}

... или запустите другой запрос, хотя вышеуказанного должно быть достаточно ...

SELECT MAX(`currenttime`) AS `latest`
  FROM `game_scores`
 WHERE `game_id` = '2268'

Отформатировано для вашего удобства OMG Ponies style .

1 голос
/ 10 марта 2011

Прошу прощения, я на самом деле не проверял это, но, может быть, что-то вроде этого поможет:

SELECT
    _id,
    game_id,
    inning_id,
    scoretype,
    oponentonescore,
    oponenttwoscore,
    currenttime,
    latest
FROM
    game_scores
JOIN (
    SELECT
        MAX(currenttime) AS latest
    FROM
        game_scores
    WHERE
        game_id = '2268'
) AS latest_calculation
WHERE game_id = '2268';

, хотя это решение тяжелее в базе данных, чем в приложениичтобы выяснить это после того, как запрос вернулся из базы данных (как предложил Алекс).

0 голосов
/ 10 марта 2011

Что-то в строках этого запроса сделало бы необходимое.НЕ ИСПЫТАНО.

 SELECT _id, game_id, inning_id, scoretype, oponentonescore, oponenttwoscore,
    currenttime,maxtime from game_scores OUTER join (SELECT _id,MAX(currenttime)
    as maxtime from game_scores) as t on t._id = game_scores._id  where game_id = '2268';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...