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

Bagaimana menemukan posting yang ditandai dengan lebih dari satu tag di Rails dan Postgresql

Anda mungkin ingin meninjau kemungkinan cara untuk menulis kueri semacam ini di jawaban ini untuk menerapkan ketentuan ke beberapa baris dalam bergabung . Berikut adalah salah satu opsi yang memungkinkan untuk mengimplementasikan kueri Anda di Rails menggunakan 1B, pendekatan sub-kueri...

Tentukan kueri di PostTag model yang akan mengambil Post Nilai ID untuk Tag yang diberikan nama:

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

Tentukan kueri di Post model yang akan mengambil Post catatan untuk Tag given yang diberikan nama, menggunakan struktur sub-kueri:

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

Kemudian Anda dapat menggunakan kueri seperti ini:

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. migrasi rel:postgresql untuk md5 string acak sebagai default

  2. Postgres Docker tidak menjalankan file init di docker-entrypoint-initdb.d

  3. Bagaimana cara menghasilkan Dump Postgresql dari wadah Docker?

  4. Bagaimana Cara Membuat Objek Dalam Tampilan Django?

  5. Variabel tabel PostgreSQL