Есть три связанные таблицы магазина: пользователи, товары, покупки.
Джойним их и получаем одну общую таблицу, в которой отражены все покупки каждого из товаров.
Среди прочего там есть столбцы userID, productID, date, ...
Разные юзеры покупают разные товары в разное время.
Как получить таблицу, которая хранит в себе последнюю покупку каждого из товаров (получить ID товара и ID пользователя, который совершил эту последнюю покупку). В общем виде хочу знать, кто последний купил тот или иной товар?
Что делаю я:
SELECT userID, productID, MAX(date) FROM table
GROUP BY productID
Ожидаю получить таблицу, в которой будет каждая строка соответствовать одному продукту и в ней будет дата последней покупки, и соответственно, продукт и юзер.
Получаю в принципе такую таблицу, но:
Дата в поле MAX(date) является действительно самой большой датой в конкретной группе и productID тоже нормальный, а вот
userID берётся другой, не связанный со строкой, содержащей эту максимальную дату. Соответственно, я получаю не последнего юзера, который купил этот товар, а просто одного из юзеров, который когда-либо покупал этот товар (на деле данные в userID берутся просто из первой строки текущей группы). Т.е. таблица получается не связанная и не решающая задачу.