В этом вопросе участвуют 2 таблицы:
Таблица 1:
|- Time Stamp -|- Special Number -|- Other Data -|
|- 2011 -|- 1 -|- green -|
|- 2010 -|- 1 -|- blue -|
|- 2009 -|- 2 -|- yellow -|
|- 2011 -|- 3 -|- red -|
|- 2010 -|- 3 -|- orange -|
|- 2009 -|- 4 -|- purple -|
Таблица 2:
|- Special Number -|- State (location) -|
|- 1 -|- Hawaii -|
|- 2 -|- Hawaii -|
|- 3 -|- Alaska -|
|- 4 -|- Alaska -|
Таблица 2 связывает «Специальный номер» сa 'State'
Теперь результат, который я пытаюсь получить, будет выглядеть примерно так:
|- Time Stamp -|- State (location) -|- Other Data -|
|- 2011 -|- Hawaii -|- green -|
|- 2011 -|- Alaska -|- red -|
Где я пытаюсь получить метку времени MAX, сгруппированную по каждому состоянию,а также другие данные, соответствующие этой строке «последней отметки времени» из таблицы 1.
Если я это сделаю:
SELECT MAX(time stamp), state
FROM table 1, table 2
WHERE table 1.special number = table 2.special number
GROUP BY state
Возвращает максимальную отметку времени для каждого состояния (котороеэто почти то, что я ищу), но когда я пытаюсь включить «Другие данные», он возвращает все записи (поскольку каждая запись «других данных» уникальна).
Я надеюсь, что кто-то может предложить некоторые идеиСпасибо
РЕДАКТИРОВАТЬ:
Таблица 1 имеет столбец уникальный идентификатор:
|- Time Stamp -|- Special Number -|- Other Data -|- Unique Row ID -|
|- 2011 -|- 1 -|- green -| 0 -|
|- 2010 -|- 1 -|- blue -| 1 -|
|- 2009 -|- 2 -|- yellow -| 2 -|
|- 2011 -|- 3 -|- red -| 3 -|
|- 2010 -|- 3 -|- orange -| 4 -|
|- 2009 -|- 4 -|- purple -| 5 -|
РЕДАКТИРОВАТЬ 2: РЕШЕНИЕ * * * * Спасибо всем, кто написал!* * * *
SELECT t1.timestamp, t2.specialNumber, t1.otherData
FROM Table1 t1 inner join Table2 t2 on t1.specialNumber = t2.specialNumber
inner join (select MAX(Table1.timestamp) maxts, Table2.state
from Table1 inner join Table2 on Table1.specialNumber = Table2.specialNumber
group by Table2.state) t3
on t2.state = t3.state and t1.timestamp = t3.maxts
* вот так *