簡體   English   中英

如何查詢以使用Rails返回聯接表中最常見的外鍵

[英]How to query to return the most common foreign key in a join table with rails

我有3個模型。 項目,項目材料和材料

一個項目具有許多ProjectMaterials和許多通過ProjectMaterials創建的材料。

這是雙向的,ProjectMaterial充當具有用戶可提交屬性的聯接表。

我想查詢ProjectMaterial模型以查找material_id的最常用值。 這樣,我可以使用它來查找最常用的材料。

任何查詢的幫助將不勝感激。 我被卡住了。 提前致謝!

一種方法是通過獲取ID來獲取數組,然后計數最頻繁。

ids = ProjectMaterial.pluck[:material_id]

例如: Ruby:如何在出現次數最多的數組中查找項目?

或者更好的是,通過查詢來獲取帶有計數的哈希:

counts = ProjectMaterial.group(:material_id).count

一旦知道您獲得了哈希,就可以通過任何一種紅寶石方法進行排序,選擇頻率最高或頻率最高的n。 排序示例:

counts.sort_by { |_, v| v }

您可以像這樣在ActiveRecord查詢上鏈接groupcountsort方法:

ProjectMaterial.group(:material_id).count.values.sort.last

第一部分ProjectMaterial.group(:material_id).count為您提供每個{material_id0 => rows_count0, material_id1 => rows_count1, ...}的哈希值。 然后,您可以只獲取數組中的哈希值,將其排序並獲取最后一項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM