PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để truy vấn SQL và ActiveRecord.find_by_sql trả về các kết quả khác nhau?

Bạn có kết quả đúng trong cả hai ví dụ.

Nếu bạn chỉ sử dụng count khi chọn, bạn luôn nhận được một số do truy vấn. Vì vậy, kết quả của bạn từ cơ sở dữ liệu là có thể mong đợi.

Trong trường hợp rails bạn đang cố gắng lấy một số tập hợp các bản ghi theo scope với count trong câu lệnh chọn. Có thể dự kiến ​​sẽ có bộ trống nếu bạn có count trong truy vấn của bạn.

Hãy thử count_by_sql method http://apidock.com/rails/ActiveRecord/Base/count_by_sql/class để nhận số lượng bản ghi thay vì tập hợp trống.

Và sử dụng nó mà không có phạm vi, nhưng với phương thức lớp:

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. Cái nào hiệu quả hơn smallint hoặc ký tự (10)?

  2. Làm thế nào để nhận thông báo tự động về các thay đổi trong bảng?

  3. Postgresql thực thi kết hợp cột hai chiều duy nhất

  4. Cách làm phẳng kết quả PostgreSQL

  5. Django - (OperationalError) FATAL:Xác thực danh tính không thành công cho tên người dùng