自宅でお小遣い稼ぎをしたい主婦がアプリリリースを目指すブログです。この広告は、90日以上更新していないブログに表示しています。SQLこんにちは、マリンです。今回はSQLの内部結合と外部結合についてです。〇〇結合とは?まずはそもそものお話しです。〇〇結合とはなんぞ?は?そこから?と思った方は飛ばして下さい。基本は「一つのテーブルから条件に合致するデータを取り出す」だと思います。sample_tablesだけでは探せないですよね。この場合検索条件に出せるのはここで出たsample_tablesのカラムだけです。こんな時に使えるのが〇〇結合です。結合させて取得する事が可能になります。次からはその結合方法について解説しますので、その前に例として使うテーブル構造をば。それぞれのテーブルから指定したカラムの値が一致するレコードだけを結合します。ポイントは、「一致するレコードだけ」という点です。一致しないものや、そのカラムがnilのものなどは除外されます。一致したものを結合します。SELECTを指定しなければテーブル1の全カラムが対象になります。詳細では例を使って詳細を解説します。ここからはRailsでの書き方も追加します。owners.id[Rails]Car.joins(:owner)carsテーブルとownersテーブルを結合し、cars.owner_idとowners.idの値が一致するレコードをくっつけます。16:08:08">]>こんな感じで条件に一致するレコードが取得できます。"elgrand"は除外されています。JOINのownersの値も取得できます。そちらも検証してみました。JOINの方のカラムを取得する場合にはSELECTでそのカラムを指定する必要があります。詳しくは補足をご覧ください。【番外】結合した方のカラムの値を取得してみる結合後のレコードからownersのnameを取得してみます。nameというカラム名が両テーブルでかぶっているので、結合時に別名をつける。owner_name")endSELECTの中でowner.nameをowner_nameに変更して値を取得します。次に、上で取得・連結したレコードの中からrailsでowner_nameを取り出します。"jiro"]と結果が出るはずです。並び順はcars.idの順番に並んでいます。まとめ最後に内部結合のポイントをまとめておきます。値が一致したレコードのみを取得、結合する基準となるテーブルは右側(FROM)のテーブル基準テーブルは並び順などに関係してくる基準テーブルについては結合全体で関係してくることです。JOINのownersの値も取得できます。書きましたが、これはその後の番外で解説したSELECT句に結合する方のカラムを指定した時のみ、そのカラムの値を使用できるようです。試しにOwnerモデルの方でCarsをjoinして以下のようにやってみましたが、NoMethodErrorが出ました。%>モデルを以下のように書き換えるときちんと表示できました。ー内部結合ーTweet広告を非表示にする関連記事2018-01-17【jQuery】要素をコピーするこんにちは、マリンです。今回は要素をコピーする方法をご紹介...2018-01-14【jQuery】クリックでテーブルの行をハイライトさせる。皆さん明けまして(だいぶ経ちますが)おめでとうございます。db:rollbackしたい時の間違えない手順こんにちは、マリンです。初心者の域を脱しない私は、よく...2017-11-12【Rails】select_tagを使って表示内容を変えるこんにちは、マリンです。今回はselect_tagを使ってページの表...2017-10-30【Rails】paramsがなんなのかやっとわかった!こんにちは、マリンです。»プロフィールid:song-of-life1352607アラサーで思い立ってプログラミングを始めた主婦が、自宅でお小遣い稼ぎをしたいがために自作アプリのリリースを目指すブログです。【Git】ブランチ間違えてコミットしてた!?月別アーカイブ参加グループプログラミングはてなブログをはじめよう!song-of-life1352607さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。