0
Ver 14.14 Distrib 5.1.73
活動記錄(MYSQL) - 從多個列
activerecord (4.1.14)
我有屬於貸款人和借款人交易模型選擇不同的ID。我想在一個SQL查詢中找到機構交易的所有uniq交易對手。以下作品中的查詢,但只是因爲我壓扁&獨特-IFY的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]
後恢復正常)
但什麼我想要做的是使用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]]
我只想唯一ID的平面陣列:[1,2,3]
任何想法?謝謝!
感謝回答。我正在使用一個GROUP BY,因爲類似的SO帖子(http://stackoverflow.com/questions/12188027/mysql-select-distinct-multiple-columns?rq=1)....我開放給任何作品!話雖如此,你的查詢會產生一個嵌套數組返回集,其中包含lender_id和borrower_id的唯一_combinations_(例如[[1,2],[1,3]])...我只需要唯一的ID作爲平面數組(例如[1,2,3])。 – daino3
我會在應用程序中進行那種處理。 – Strawberry
大聲笑,這就是我正在做的('flatten.uniq'),但我想了解如何通過SQL/ActiveRecord來做到這一點(因此問題)。似乎是一個非常相關/頻繁的使用案例。 – daino3