Ruby datamapper получает все по ограничению, только если последний - PullRequest
0 голосов
/ 16 июня 2011

У меня есть таблица примерно такая:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...