1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

テーブル結合をするためのメソッドなど (#20190815)

Last updated at Posted at 2019-08-16

本記事について

学んだことを日々アウトプットしていますよ、シリーズです。

joins

joinsはテーブル同士を内部結合して検索するためのメソッド
内部結合とは、各テーブル同士で関連づけられたidが一致しているものだけを使って新しいテーブルを作ること
なので、idが一致しないものは切り捨てられる
userが複数のpostもつような関係が設定されている場合は

User.joins(:posts)

を実行すると

SELECT "users".* FROM "users" INNER JOIN "posts" ON "posts"."user_id" = "users"."id"

というSQLが走り、idが一致しているカラムだけが取り出されて、そのほかは切り捨てられる

select

joinsでselectメソッドを使うことによって、特定のカラムを選択して表示できる
select(テーブル名.カラム名)で、特定のカラムだけを選んで表示できる

User.joins(:posts).select("users.name")
SELECT users.name FROM "users" INNER JOIN "posts" ON "posts"."user_id" = "users"."id"

where

joinsとwhere句を組み合わせることによって、内部結合した後に条件を指定してデータ取り出せる

User.joins(:posts).where(posts: { month: 8 })
SELECT "users".* FROM "users" INNER JOIN "posts" ON "posts"."user_id" = "users"."id" WHERE "posts"."month" = ?  [["month", 8]]

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?