ユーザーとステータスの2つのテーブルがあります
ステータステーブルには、user_id、status、occured_onがあります。ステータスは「削除済み」または「追加済み」のいずれかであり、occured_onはユーザーが削除または追加された日付です。
現在追加されているユーザーが必要です。つまり、最新のステータスレコードが「追加」されたすべての(個別の)ユーザーです。
Railsを使用していて、次のことを試しました。
User
.joins(:statuses)
.where('statuses.status = ?', 'added')
.order('statuses.occured_on DESC')
.uniq
これはSQLに変換されます:
SELECT DISTINCT users.*
FROM users
INNER JOIN statuses
ON statuses.user_id = users.id
WHERE statuses.status = 'added'
ORDER BY statuses.occured_on DESC
それは私にエラーを与えます:
PG::Error: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 1: ...statuses.status = 'added') ORDER BY statuses.oc...
動作するRailsコードまたはストレートSQLのいずれかを知ってうれしいです。
また、可能であれば副選択はしたくないです。