sql >> データベース >  >> RDS >> PostgreSQL

RailsとPostgresqlで複数のタグでタグ付けされた投稿を見つける方法

    複数の行に条件を適用するためのこの回答で、この種のクエリを作成するための可能な方法を確認することをお勧めします。参加中 。これは、サブクエリアプローチである1Bを使用してRailsでクエリを実装するための1つの可能なオプションです...

    PostTagでクエリを定義します Postを取得するモデル 特定のTagのID値 名前:

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

    Postでクエリを定義します Postを取得するモデル 特定のTagのレコード サブクエリ構造を使用した名前:

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

    次に、次のようなクエリを使用できます:

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


    1. 私は本当にmysqlインジェクションを理解していませんか?それは何ですか?

    2. MySQLクエリ-順序に関する問題

    3. 従業員テーブルから2番目に高い給与を見つけるにはどうすればよいですか?

    4. MYSQL-制限によるグループ化