sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur är det möjligt att SQL-fråga och ActiveRecord.find_by_sql ger olika resultat?

Du har rätt resultat i båda exemplen.

Om du bara använder count i select fick du alltid ett nummer som ett resultat av frågan. Så ditt resultat från databasen är förväntat.

I rails-fallet försöker du få en uppsättning poster efter scope med count i välj uttalande. Det förväntas bli tomt om du har count i din fråga.

Prova count_by_sql metod http://apidock.com/rails/ActiveRecord/Base/count_by_sql/class för att få antal poster istället för tomma uppsättningar.

Och använd den utan omfattning, men med klassmetoden:

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. Hur många värden i en in-sats är för många i en SQL-fråga?

  2. Är det användbart att starta SQL-frågans WHERE-sats med 1=1 i Oracle?

  3. Hur konverterar man beroende underfråga för att gå med för bättre prestanda?

  4. Sök i Json-kolumnen med Laravel