makoto_blog

パパさん_blog

プログラミング勉強メモや雑記など。

rails joinしてカウント

QAライト

QAサイトに、質問ごとに現在の回答数を載せたいと思ったんですよ。

https://qa-lite.herokuapp.com/questions

sql

こんなsqlかな〜と思ったんですね。

select count(a.id)
  from questions as q
 inner join
       answers as a
    on q.id = a.question_id
 where q.id = 1;

local で sqliteを動かす

以下を参考にローカルで試す。

  • 接続
rails db
  • テーブル一覧
sqlite> .tables
  • カラム確認
sqlite> pragma table_info(TABLE_NAME); 
  • 終わる
sqlite> .exit

件数は普通にとれたので、これをrailsアプリで動かそう。SQLはどう実行するんやろって調べてたんですね。

sqlを書かないでよかった

結論はこんな感じです。これで取れます。

<%= question.answer.count %>

エンティティはquestionとanswerで、関係は1:Nです。モデルのquestion.rbにはこう書いてます。

  has_many :answer

仕事(springboot)ではベタにSQLを書くので、こんなやり方なのねと勉強になる。