Есть 2 таблицы. Первая содержит в себе много разных столбцов, но нас интересуют 2 столбца - Name и ID. Вторая содержит в себе 3 столбца: ID, Date, Reason, Type. Значение Type может быть от 1 до 3
Первая таблица используется лишь для поиска ID по Name, который будет в выборке для второй таблицы.
Нужно извлечь строки, относящиеся к определённому ID, таким образом, что из всего множества строк с Type, которые относятся к этому ID, извлекутся по 1 экземпляру. И извлекутся именно те экземпляры, которые добавлены в таблицу позже.
Как выглядит таблица данных:
ID Date Reason Type
1 12.03.14 abc 1
1 13.03.14 sdfbc 1
1 14.03.14 asdfbc 2
1 12.03.14 abc 3
1 15.03.14 abc 2
2 16.03.14 abc 1
В результате запроса у нас для ID 1 должно быть всего 3 строки, так как для заданного количества строк с ID 1 количество разных типов = 3. Причем обратите внимание, у нас несколько строк для ID 1 с типом 1 и типом 2. Таким образом нужно извлечь самые свежие строчки с типом 1 и типом 2, ну и с типом 3.
Также обратите внимание, что количество типов может варьироваться.
Пробовал делать таким запросом, но это не то.
SELECT
TYPE,
REASON,
MAX(DATE) AS DT
FROM TABLE
INNER JOIN USERS ON USERS.ID = TABLE.ID
WHERE
USERS.NAME = 'Test'
GROUP BY
TYPE
ORDER BY DT DESC
Если использовать этот запрос, то он путает значения Date от одной строки, со значением Reason другой.