sql >> Database >  >> RDS >> PostgreSQL

Aangepaste SELECT-clausule opnemen in ActiveRecord-query

Nou, dit was simpel. Gebruik .first was het probleem. Ik veronderstel dat dit komt omdat er geen modelrecords zijn geretourneerd door de query. Als ik de 0-index van het resultaat rechtstreeks adresseer, krijg ik al mijn scores.

dus deze code werkt:

 query = 
      Assessment.rating_attributes.collect{|attribute|
        1.upto(5).collect do |i|
        %Q{sum(CASE WHEN #{attribute.to_s} = #{i} then 1 else 0 end) as #{attribute}_score_#{i}}
      end
    }.join(', ')

Assessment.where(selection_attribute: 1038).select(query)[0]
=> #<Assessment id: nil>

Assessment.where(selection_attribute: 1038).select(query)[0].first_attribute_score_1
=> 3



  1. Ik heb de blanco waarde uit de database in laravel bij select

  2. SQL ALTER TABLE voor beginners

  3. Conversie van ANSI naar Oracle Join-syntaxis

  4. Vorige MySQL-gegevensmap gebruiken bij nieuwe MySQL-installatie