PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как е възможно SQL заявката и ActiveRecord.find_by_sql да връщат различни резултати?

Имате правилен резултат и в двата примера.

Ако използвате само count в select винаги получавате число като резултат от заявка. Така че вашият резултат от базата данни е очакван.

В случай на релси се опитвате да получите някакъв набор от записи по scope с count в оператора select. Очаква се да получите празен набор, ако имате count във вашата заявка.

Опитайте count_by_sql метод http://apidock.com/rails/ActiveRecord/Base/count_by_sql/class за да получите брой записи вместо празен набор.

И го използвайте без обхват, но с метод на клас:

def self.unverified_with_no_associations()
  self.count_by_sql("SELECT COUNT(DISTINCT(accounts.id, accounts.email)) FROM accounts WHERE level = 0 AND id NOT IN
            (SELECT DISTINCT(account_id) FROM verifications) AND id NOT IN 
            (SELECT DISTINCT(account_id) FROM positions) AND id NOT IN
            (SELECT DISTINCT(account_id) FROM edits) AND id NOT IN
            (SELECT DISTINCT(account_id) FROM posts) AND id NOT IN
            (SELECT DISTINCT(account_id) FROM reviews) AND id NOT IN
            (SELECT DISTINCT(sender_id) FROM kudos) AND id NOT IN
            (SELECT DISTINCT(account_id) FROM stacks WHERE account_id IS NOT NULL)")
end



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво е правилото за „неизвестен“ и извод за тип?

  2. Индекс за получаване на брой редове на таблица PostgreSQL само за четене (неизменна)?

  3. Подредете, като не работите върху изчислени колони, ако редът е приложен към множество колони

  4. Как да създадете n-gram в postgresql

  5. Проблеми с rails сървъра