Yigit C. Bacakoglu Yazılım Mühendisi | Rubyist | Mekanist on Rails

  22/12/2013 at 13:39       by yigit     under ,

Rails uygulamasında bir tabloda, title, description gibi kolonlarda aynı değerlere sahip kayıtlar içi gruplanmış bir set istediğimizi varsayalım. MySQL de group kullanarak bunu yapabiliyoruz ama PostegreSQL de biraz daha farklı.

Mysql'de yazdığımız statement, Postegresql de aşağıdakine benzer hata veriyor

ActiveRecord::StatementInvalid: PGError: ERROR:  column "asset.id" must appear in the GROUP BY clause or be used in an aggregate function

Bu durum için DISTINCT ON kullanabiliriz

  def self.distinct_by_columns(default_columns = "title, description")
    select("DISTINCT ON(#{default_columns}) *")
  end

ve:

    @uploaded_media = current_user.uploaded_media.distinct_by_columns

Etiketler: rails postegresql distinct on, rails group by, postegresql group by multiple column, distinct on multiple columns, birden fazla kolona göre distinct, rails unique sql

Comment PostegreSQL - Distinct on multiple columns - Birden fazla kolona göre distinct - Ruby on Rails