Эффективный запрос для различного количества и группы с двумя столбцами - PullRequest
0 голосов
/ 10 октября 2011

Учитывая простую модель, которая состоит из описаний, тегов и некоторых других полей

Результатами должно быть:

  • список всех тегов в Entry.allбез дубликатов (например, Entry.select ("DISTINCT (tag)"))

  • количество дубликатов для каждого тега, также используется для сортировки тегов

  • все описания для каждого тега отсортированы в алфавитном порядке, опять же без дубликатов (однако, одно и то же описание может существовать с другим тегом)

Возможно ли объединить это в один (эффективный) запрос?

Редактировать:

def change
  create_table :entries do |t|
    t.datetime :datum, :null => false                            
    t.string :description                                        
    t.string :tag                                                
    (and some others)
  end

  add_index :entries, :user_id
end

1 Ответ

0 голосов
/ 10 октября 2011

Лучше создать дополнительную таблицу:

rails g model Tag name:string description:string
rails g model Entry tag:references ...

А потом просто позвоните им:

@entries = Entry.select('tag_id, count(tag_id) as total').group(:tag_id).includes(:tag)

После этого у вас будут все описания вашего объекта:

@entries.first.tag.description # description of entry tag
@entries.first.tag.total # total number of such kind of tags

P.S .: Почему только одна метка на запись?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...