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

Jak to możliwe, że zapytanie SQL i ActiveRecord.find_by_sql zwracają różne wyniki?

Masz dobry wynik w obu przykładach.

Jeśli używasz tylko count w select zawsze otrzymujesz numer jako wynik zapytania. Więc wynik z bazy danych jest oczekiwany.

W przypadku railsów próbujesz uzyskać jakiś zestaw rekordów przez scope z count w oświadczeniu select. Można spodziewać się pustego zestawu, jeśli masz count w zapytaniu.

Wypróbuj count_by_sql metoda http://apidock.com/rails/ActiveRecord/Base/count_by_sql/class aby uzyskać liczbę rekordów zamiast pustego zestawu.

I używaj go bez zakresu, ale z metodą klasy:

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. Jak przywrócić publiczny schemat do innego schematu?

  2. Jak używać ilike sqlalchemy w polu tablicy postgresql?

  3. Podczas próby zniszczenia kontrolera pojawia się błąd pg

  4. Zapytanie Postgres jsonb na zagnieżdżonym obiekcie

  5. Użyj ciągu znaków[][] z ngpsql