나는 Transaction
(account_id
, date
및 amount
)과 중복되는 테이블 (transactions
)을 가지고 있습니다.AREL에서 테이블을 자체에 연결하여 중복 된 항목을 찾는 방법은 무엇입니까?
내 영어 기능 요구 사항은 "동일한 account_id, 날짜 및 금액을 가진 둘 이상의 트랜잭션이있는 모든 트랜잭션을보고 싶습니다."입니다. 나는 레일 3.2.x와 포스트 그레스를 사용하고
SELECT * FROM transactions t1, transactions t2
WHERE t1.id != t2.id
AND t1.date = t2.date
AND t1.amount = t2.amount
AND t1.account_id = t2.account_id
: AREL에 포기
일시적으로, 나는 SQL에서이 같은 생산.
원래, 나는 AREL이 시도 :
Transaction.group(:account_id, :date, :amount).having("count(id) > 1")
그러나 그것은 나에게 집계 함수에 대한 SQL 오류 준 :
PG::Error: ERROR: column "transactions.id" must appear in the GROUP BY clause or be used in an aggregate function
.. 내가 을하지 않기 때문에, 실망은 group by 절에서 ID를 원합니다. 요점은 중복을 확인하는 데 ID가 무시되기를 바랍니다.
누구든지 AREL의 올바른 방향으로 나를 가리킬 수 있으면 감사하겠습니다. find_by_sql
은 레코드가 필요할 때 유용하지만 ActiveAdmin 범위를 만들려고합니다. 배열을 좋아하지 않습니다.
나는 downvotes 상관 없어,하지만 난이을 downvoted 된 이유에 댓글 없음에 마음 downvotes을합니까? – makdad
아마 그 프로필 사진 : P – pchap10k