Ver 14.14 Distrib 5.1.73
アクティブレコード(MYSQL) -
activerecord (4.1.14)
複数の列からの個別のIDを選択して、私は貸し手と借り手に属し貿易モデルを持っています。私は、1つのSQLクエリで機関の取引にユニークカウンターパーティーをすべて見つけたいと思っています。
Trade.where("borrower_id = :id OR lender_id = :id", id: institution.id).uniq.pluck(:lender_id, :borrower_id).flatten.uniq
(私はこれが機関自体が含まれて知っているので、我々は[1,2,3,4] - [1]
と後の正常化)
しかし:私は、SQLクエリの後&ユニーク-IFY配列をフラット化作品以下のクエリが、唯一のため私はGroup By
句などを使用して、私のSQLクエリがflatten.uniq
の部分を処理するようにしたいと思います。
それはユニーク組み合わせlender_id
とborrower_id
ののネストされた配列を返すため、以下は動作しません:
Trade.where("borrower_id = :id OR lender_id = :id", id: institution.id).group(:lender_id, :borrower_id).uniq.pluck(:lender_id, :borrower_id)
=> [[1,2], [1,3], [2,3]]
私はJUSTユニークIDのフラット配列たい:[1,2,3]
任意のアイデア?ありがとう!
感謝を見えるかもしれません。私は同様のSOの投稿(http://stackoverflow.com/questions/12188027/mysql-select-distinct-multiple-columns?rq=1)のためにGROUP BYを使用していました....私は何でもうまくいきます!あなたのクエリは、lender_idとborrower_idの一意の_combinations_を含むネストされた配列の戻り値を返します(例えば、[[1、2]、[1,3]])...私はフラットな配列としてユニークなIDを必要とします(例えば、[1,2,3])。 – daino3
私はアプリでこの種の処理を行います。 – Strawberry
LOL、これは私がやっていること( 'flatten.uniq')ですが、私はSQL/ActiveRecordを使ってこれをどうやって行うことができるのかを知りたいと思います。かなり関連性の高い/頻繁な使用例のようです。 – daino3