PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Włączenie niestandardowej klauzuli SELECT w zapytaniu ActiveRecord

Cóż, to było proste. Używanie .first był problem. Przypuszczam, że dzieje się tak dlatego, że zapytanie nie zwraca rekordów modelu. Jeśli odniosę się bezpośrednio do indeksu 0 wyniku, otrzymam wszystkie moje wyniki.

więc ten kod działa:

Zapytanie
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CS50:operator LIKE, podstawianie zmiennych z rozszerzeniem %

  2. Jak zainstalować postgres z NSIS ze wszystkimi parametrami?

  3. Symfony3 zapisuje każdą aktualizację w bazie danych

  4. Jak napisać podzapytanie w klauzuli From w django ORM

  5. Jak iterować tabelę według ustalonych interwałów czasowych w Postgresie?