1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

joinの書き方

Pocket

LaravelのQueryBuilderにもjoinがあります。

業務などで主に使うものは、inner joinとleft joinではないでしょうか。

inner joinの場合

join関数を使うことで可能です。

結合条件を、第2、第3、第4引数で表現します。

例) blogsテーブルにarticlesテーブルをinner joinする場合

複数のキーでjoinする場合

少々手間ですが、無名関数を使います。

例として、生徒が所属している部活の履歴テーブルを考えます。

部活の履歴テーブルには、生徒ごとに各学年でどこの部に所属していたかが記録されています。

また、その学校は学年のはじめに所属する部を決定し、一年間は継続しなければならないとします。

生徒テーブルと部活の履歴テーブルをjoinして、生徒が現時点で所属している部の一覧を調べることにしましょう。

studensテーブルとgroup_logsテーブルを、

studens.id と group_logs.student_id
students.grade と group_logs.grade

の2つのキーで結合します。

上記のように、無名関数の中でonを数回使うことで、複数のキーでjoinすることができます。

joinとwhereの組み合わせについて

複数のキーでjoinする意図で、以下のようにwhereを使って記述しても動きません。

SQLとして次のように展開されるためです。

select * from students inner join group_logs on students.id = group_logs.student_id and students.grade = ‘group_logs.grade’

students.grade(studentsテーブルのgradeカラム)に対して、”group_logs.grade”という文字列と比較してしまいます。

whereの場合は、あくまで値と組み合わせて使ってください。

学年が1年より上のデータのみを取り出したい場合、

などと記述します。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

プログラミングで挫折しそうなら、現役エンジニアにマンツーマンで相談してみませんか?オンラインのプログラミングスクール「TechAcademy」のメンターが対応。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る