У меня есть таблица примерно такая:
----------------------------------------
|uID|responseDate|field_01|field_02|etc|
+---+------------+--------+--------+---+
| 1 | 2011-12-02 | yes | no | |
| 2 | 2011-11-25 | no | yes | |
| 1 | 2012-01-02 | no | yes | |
| 2 | 2012-12-01 | no | no | |
| 3 | 2010-01-02 | yes | no | |
+---+------------+--------+--------+---+
Я хотел бы получить идентификаторы uID и responseDates, для которых последний ответ на field_01 - «да», поэтому мой запрос должен вернуть:
------------------
|uID|responseDate|
+---+------------+
| 3 | 2010-01-02 |
+---+------------+
Я использую внутреннее соединение, но неправильно.Вот мой запрос:
SELECT f.uID, f.responseDate
FROM form_05 as f
INNER JOIN (
SELECT uID, max(responseDate) AS latest_date
FROM form_05
WHERE field_01 = 'yes'
GROUP BY uID ) dmax
ON dmax.uID = f.uID and dmax.latest_date = f.responseDate
ORDER BY f.uID ASC;
Что это возвращает, однако, это последние записи для каждого uID, где field_01 да, то есть:
------------------
|uID|responseDate|
+---+------------+
| 1 | 2011-12-02 |
| 3 | 2010-01-02 |
+---+------------+
Но я не хочу этого,Я хотел бы сделать так, чтобы только последняя запись для каждого uID подходила для теста.Как я могу реструктурировать запрос?Любые указатели приветствуются.