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

Cách tìm các bài đăng được gắn thẻ nhiều hơn một thẻ trong Rails và Postgresql

Bạn có thể muốn xem lại các cách có thể để viết loại truy vấn này trong câu trả lời này để áp dụng điều kiện cho nhiều hàng tham gia . Đây là một tùy chọn khả thi để triển khai truy vấn của bạn trong Rails bằng cách sử dụng 1B, cách tiếp cận truy vấn phụ ...

Xác định truy vấn trong PostTag mô hình sẽ lấy Post Giá trị ID cho một thẻ Tag nhất định tên:

# PostTag.rb
def self.post_ids_for_tag(tag_name)
  joins(:tag).where(tags: { name: tag_name }).select(:post_id)
end

Xác định một truy vấn trong Post mô hình sẽ lấy Post bản ghi cho một thẻ Tag nhất định tên, sử dụng cấu trúc truy vấn phụ:

# Post.rb
def self.for_tag(tag_name)
  where("id IN (#{PostTag.post_ids_for_tag(tag_name).to_sql})")
end

Sau đó, bạn có thể sử dụng một truy vấn như sau:

Post.for_tag("basil").for_tag("tomato")


  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ách đặt thời gian chờ câu lệnh để thực hiện truy vấn

  2. Thêm một trong hai ràng buộc không null trong postgresql

  3. các điểm ngắt trong nhật thực bằng cách sử dụng postgresql

  4. Làm cách nào để thực hiện việc hút chân không bằng PostgreSQL?

  5. Bí danh tham chiếu trong mệnh đề WHERE