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

ActiveRecord - chọn bản ghi đầu tiên từ mỗi nhóm

Tôi không chắc làm thế nào bạn có thể gọi most_recent_chat_received_from_connected_users , là một phương thức phiên bản của Conversation của bạn lớp, trên một bản sao của User mà không gặp lỗi, nhưng tôi sẽ thêm một công cụ tìm tùy chỉnh vào mô hình Hội thoại:

class Conversation < ActiveRecord::Base
  # ...

  def self.most_recent_for(user_id)
    select('DISTINCT ON (sender_id) *').where(reciever_id: user_id).order("sender_id, created_at DESC")
  end

  # For MySQL you could have used:
  #
  # def self.most_recent_for(user_id)
  #   where(reciever_id: user_id).group("sender_id").order("created_at DESC")
  # end

  # ...
end

Giờ đây, bạn có thể nhận được các cuộc trò chuyện mong muốn trong bộ điều khiển của mình với:

@conversations = Conversation.most_recent_for(current_user.id)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận tất cả các bài đăng với tổng số phiếu bầu và nếu người dùng hiện tại đã bỏ phiếu cho mỗi bài đăng

  2. fe_sendauth:không có lỗi được cung cấp mật khẩu sau khi thiết lập cơ sở dữ liệu PostgreSQL trên Cloud9 IDE

  3. Không thể kết nối với postgres từ máy chủ từ xa

  4. Làm cách nào để CHÈN VÀO bảng từ truy vấn động?

  5. Sắp xếp các chuỗi số được phân tách bằng dấu chấm (ví dụ:số phiên bản)