PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana mungkin kueri SQL dan ActiveRecord.find_by_sql mengembalikan hasil yang berbeda?

Anda memiliki hasil yang benar dalam kedua contoh.

Jika Anda hanya menggunakan count di pilih Anda selalu mendapat nomor sebagai hasil kueri. Jadi hasil Anda dari database dapat diharapkan.

Dalam kasus Rails Anda mencoba untuk mendapatkan beberapa set catatan dengan scope dengan count dalam pernyataan pilih. Diharapkan mendapat set kosong jika Anda memiliki count dalam kueri Anda.

Coba count_by_sql metode http://apidock.com/rails/ActiveRecord/Base/count_by_sql/class untuk mendapatkan jumlah catatan alih-alih set kosong.

Dan gunakan tanpa ruang lingkup, tetapi dengan metode kelas:

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. Bagaimana cara menghitung nilai nol di postgresql?

  2. Bisakah layanan PostgreSQL di cluster OpenShift menerima lalu lintas eksternal melalui rute yang terbuka?

  3. psycopg2 tidak dapat menemukan tabel apa pun setelah koneksi

  4. Bagaimana saya bisa menggabungkan kolom dari dua tabel menjadi satu output?

  5. Bagaimana saya bisa mengelompokkan anak-anak dan orang tua dalam satu kueri?