![](/img/trans.png)
[英]How to select specific column from a table that has one to many relationship with another table?
[英]How to sort one table has many relationship with another table in Rails 4?
我有三個表供應商,評論,工作表。 我必須排序所有供應商。 (admin_verified:true)評論。 如果'n'供應商具有相同數量的審核計數,則按工作計數排序。
我寫了一個有效的記錄查詢,但如果供應商至少有一個經過驗證的評論,它只需要供應商。 查詢:
Vendor.
joins(:reviews).
where("reviews.verified"=>true).
group("reviews.vendor_id").
order("count(reviews.vendor_id)")
此查詢僅在兩個表之間。 如何根據以上順序編寫rails活動記錄查詢以對供應商進行排序?
# vendor.rb
has_many :reviews
has_many :works
# review.rb (table_fields: 'verified','comment',... and so on)
belongs_to :vendor
# work.rb (table_fields: 'work_title','work_description',... and so on)
belongs_to :vendor
你可以嘗試這樣的事情:
vendors = Vendor.joins('LEFT JOIN (SELECT id, vendor_id FROM reviews WHERE reviews.verified = 1) as r ON r.vendor_id=vendors.id')
.joins('LEFT JOIN works ON works.vendor_id=vendors.id')
.group('vendors.id')
.select('vendors.* , COUNT(DISTINCT r.id) AS no_reviews, COUNT(DISTINCT works.id) AS no_works')
.order('no_reviews DESC, no_works DESC')
在這種情況下,您還可以從供應商對象訪問計數,例如: vendors.first.no_reviews
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.