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

Railsでの複数のテーブル結合

    質問にあるSQLクエリを書き直すには、次のようにする必要があります(ただし、モデルの関係を完全に視覚化するのに苦労しているため、これは少し推測になります):

    RagaContextApplicantsSong.
      joins(:raga_contest_applicants => [:raga_content_rounds], :contest_cat).
      group('raga_contest_rounds.contest_cat_id')
    

    ...joins メソッドは、2つの結合の両方とWHEREを処理します 句、最後にgroupが続きます 電話してください。

    参考資料として:

    同じモデルに複数のアソシエーションを参加させている場合は、簡単にリストできます> :

    Post.joins(:category, :comments)
    Returns all posts that have a category and at least one comment
    

    ネストされたテーブルを結合している場合は、ハッシュのようにリストできます:

    Post.joins(:comments => :guest)
    Returns all comments made by a guest
    

    ネストされた関連付け、複数レベル:

    Category.joins(:posts => [{:comments => :guest}, :tags])
    Returns all posts with their comments where the post has at least one comment made by a guest
    

    次のようにActiveRecordクエリインターフェイス呼び出しを連鎖させることもできます:

    Post.joins(:category, :comments)
    ...produces the same SQL as...
    Post.joins(:category).joins(:comments)
    

    他のすべてが失敗した場合は、いつでもSQLフラグメントを直接に渡すことができます。 joins メソッド 作業中のクエリからよりARQI中心の何かに到達するための足がかりとして

       Client.joins('LEFT OUTER JOIN addresses ON addresses.client_id = clients.id')
    => SELECT clients.* FROM clients LEFT OUTER JOIN addresses ON addresses.client_id = clients.id
    



    1. PostgreSQLパフォーマンスチューニングのヒント

    2. MariaDBで日付に日を追加する8つの方法

    3. MySQL:グループ化ごとにx個の結果を取得する方法

    4. MariaDBでのFROM_UNIXTIME()のしくみ