如何选择按一个字段分组的不同字段,并在ruby

时间:2018-02-14 08:24:47

标签: ruby-on-rails ruby hash distinct group-concat

我有一个包含这些字段的表:

表电话簿

 id   
 user_id
 number
 name
 added
 card_id
 speeddial
 updated_at
 sms_group_name

某些记录具有相同的sms_group_name和number,但是相同的sms_group_name存在一些重复的数字。首先,我想为每个sms_group_name和group_concat使用不同的数字,分隔符。

查询结果必须如下:

user_id,number,number,number,number,sms_group_name

选择条件为user_id的位置

我尝试了所有这些:

# @a = Phonebook.select(["DISTINCT number","sms_group_name"]).where(user_id: session[:user_id]).order(:sms_group_name).distinct
# @a = Phonebook.where(user_id: session[:user_id])
# Product.where.not(restaurant_id: nil).select("DISTINCT ON(name) name, restaurant_id, price, updated_at").order("name, updated_at")
# @a = Phonebook.where(user_id: session[:user_id]).select("DISTINCT ON(number) number, added, user_id, speeddial, updated_at,sms_group_name").order("sms_group_name")
# Phonebook.select("DISTINCT(number), *").where("user_id = ?", session[:user_id]).order("sms_group_name ASC").group_by(&:sms_group_name)
# Location.where("calendar_account_id = ?", current_user.calendar_accounts.first).group(:alias).order("alias ASC").group_by(&:category)
# @a = Phonebook.where("user_id = ?", session[:user_id]).order("sms_group_name ASC").group(:sms_group_name)
# @a = Phonebook.select("DISTINCT(number), sms_group_name").where("user_id = ?", session[:user_id]).order("sms_group_name ASC").group_by(&:sms_group_name)
# @a = Phonebook.select(:number)distinct.where("user_id = ?", session[:user_id]).order("sms_group_name ASC").group_by(&:sms_group_name)
# @a = Phonebook.select("DISTINCT(number), sms_group_name").group("sms_group_name")

他们中的大多数都会出错或无效。

怎么能达到这个目的?

我尝试将所有值选择到对象数组中,之后我尝试消除它们,但现在没有合适的解决方案。

两者的解决方案是什么: 1-使用查询解决方案,可以添加一个块 2-使用散列或数组

的解决方案

最好的问候,

0 个答案:

没有答案