sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan er det muligt, at SQL-forespørgsel og ActiveRecord.find_by_sql returnerer forskellige resultater?

Du har det rigtige resultat i begge eksempler.

Hvis du kun bruger count i select fik du altid et nummer som resultat af forespørgsel. Så dit resultat fra databasen er forventeligt.

I rails tilfælde prøver du at få et sæt poster efter scope med count i vælg udsagn. Det forventes, at det er tomt, hvis du har count i din forespørgsel.

Prøv count_by_sql metode http://apidock.com/rails/ActiveRecord/Base/count_by_sql/class for at få antallet af poster i stedet for tomt sæt.

Og brug det uden omfang, men med klassemetode:

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. Sådan konverteres tidsstempel med millisekunder til dato i Oracle

  2. Flerniveaubrugere i databasetabellen

  3. OdbcConnection returnerer kinesiske tegn som ?

  4. Hvordan NOT LIKE virker i MariaDB