Ich habe eine Tabelle, die ich verwenden, um Artikel Preisänderung im Laufe der Zeit zu protokollieren. Ich versuche, eine Methode zu schreiben, die den gesamten Satz von Artikeln (ohne Duplikate) zusammen mit ihren neuesten Preisen ergreift.RoR Auswahl neuesten "distinct by column" Reihen
Das bedeutet, dass eine Zeile mit einer item_id von 2 mehrmals in meiner Tabelle erscheinen kann, und eine Zeile mit einer item_id von 3 kann mehrmals innerhalb der Tabelle usw. erscheinen, aber das Ergebnis sollte sie nur einmal mit einschließen ihr neuster Preis
Ich versuche, einen Weg zu finden (ohne Item.find_by_sql(), wenn möglich), um den gesamten Satz von Artikeln und ihre neuesten Preise zurückzugeben.
Zur Zeit habe ich folgende:
SELECT * FROM
(SELECT * FROM item_logs
ORDER BY created_at DESC) inner_table
GROUP BY item_id
Es funktioniert, aber es scheint falsch es so zu tun, ich denke, ich bin für eine elegantere Art und Weise suchen, dies zu tun, da die aktuelle Implementierung erfordert ich find_by_sql verwenden, die nicht sehr flexibel ist.