1
我有一個Unit
模型has_many :transacions
。交易有一個type
列,表明它是什麼類型的交易:銷售,轉讓,預訂等。ActiveRecord加入聚合查詢
我想找到所有具有給定交易類型作爲其最新交易的單位。我無法弄清楚如何在ActiveRecord中做到這一點。
在SQL中,例如,如果我想找到使用「傳送」作爲其最新的事務中的所有單位,我可以這樣做:
SELECT u.*, tx.* FROM units u INNER JOIN transactions tx ON u.id=tx.unit_id
INNER JOIN
(
SELECT tx.unit_id, max(tx.created_at) AS latest_tx_date
FROM transactions tx
GROUP BY tx.unit_id
ORDER BY tx.unit_id
) max_dates
ON (tx.unit_id=max_dates.unit_id AND tx.created_at>=max_dates.latest_tx_date)
WHERE tx.type='Transfer';
這與我遇到的麻煩內部查詢的加盟。有一個可讀的ActiveRecord方式來做到這一點,或者我應該只使用SQL?
是的,我正在使用單表繼承。因此'transactions'表上的'type'列。 – jcm
「@ unit.sales」無效嗎? – nTraum
這不是我想要做的。以「sale」爲例,我並不是想要獲得最新的「sale」交易。我試圖找到最近的交易是「銷售」而不是另一種類型的單位。 – jcm