У меня есть таблица примерно такая:
id|sku|date
-----------
1 111 today
2 111 today
3 111 yesterday
3 222 today
4 222 last week
4 111 yesterday
упрощена, чтобы просто включить соответствующие вещи
Я хочу получить все элементы, у которых sku 111 является самым последним sku.Итак, для приведенной выше таблицы я хотел бы получить идентификаторы 1 и 2 обратно, но не 3, потому что, хотя у 3 есть ассоциация для sku 111, она имеет более недавнюю как 222. Она вернет 4, потому что пока4 имеет ассоциацию с 222, более новую ассоциацию с 111.
Есть ли простой способ сделать это, используя ограничения datamapper, если предположить, что объект правильно сопоставлен со схемой?
My_Obj.all(:sku => mysku....
РЕДАКТИРОВАТЬ: Если это поможет прояснить, мне интересно, если есть способ с помощью datamapper сделать что-то эквивалентное этому:
SELECT * FROM mytable
WHERE (id, date) IN (
SELECT id, MAX(date) AS date FROM mytable GROUP BY id)
AND sku=111;
Для таблицы примера, это вернет:
id|sku|date
-----------
1 111 today
2 111 today
4 111 yesterday
Поскольку самая последняя запись для id 3 не имеет sku 111, а самая последняя запись для 4 имеет, как и 1 и 2.