質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

6回答

19785閲覧

RIGHT JOINの使い道

Yasha_Wedyue

総合スコア830

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

9グッド

7クリップ

投稿2016/06/15 00:56

編集2016/06/15 01:15

お世話になっております。
今回MySQLの結合(JOIN)に関して質問があります。
調べたところINNER JOINとOUTER JOINの違いは理解できましたが、
LEFT JOINの違いとRIGHT JOINの使い分けがよく分かりませんでした。

SQL

1-- LEFT JOIN 2SELECT table1.colum1, table2.colum1 3FROM table1 LEFT JOIN table2 ON table1.colum1 = table2.colum1

SQL

1-- RIGHT JOIN 2SELECT table2.colum1, table1.colum1 3FROM table2 RIGHT JOIN table1 ON table2.colum1 = table1.colum1

これらの結果は同じになると思うのですが、RIGHT JOINを使う必要性がありますでしょうか?
私が知らないだけでPHP等でSQLを発行するときに使わざるを得ない状況というのがあるのでしょうか?

気になってしまったので質問してみました。ご回答よろしくお願いいたします。

Shuhei_Muu, stereo_code, M-Kajiwara, tamako, seastar3, ikuwow, search_search👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2016/06/15 01:12

RIGHT JOINの例示がLEFT JOINと書かれていますね
Yasha_Wedyue

2016/06/15 01:16

ご指摘ありがとうございます。修正いたしました。
guest

回答6

0

この文章のように
日本語や英語は、左から右に書きますが、

右から左に文章を書く国では、
Right Joinを使うことがあると聞いたことがあります。

投稿2016/06/16 11:10

編集2016/06/16 12:48
AketiJyuuzou

総合スコア1147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yasha_Wedyue

2016/06/17 01:53

言語自体の問題というのもあるのですね。 狭い視野だと気付かないことがたくさんありますね、ご回答ありがとうございます!
guest

0

ベストアンサー

私もRIGHT JOINを使わない派ですが単純に考えて
3テーブルを結合する場合

select * from a left join b on a.column=b.column left join c on b.column=c.column

と書くと、aを主としてbを結合してさらにbにcを結合してる
冗長な構造にみえます(あくまでも見えるだけですが)

これを

select * from b right join a on a.column=b.column left join c on b.column=c.column

と書けばbを主にaとcを結合しているがわかります。
ですので後者は結合順を気にする必要はありませんので
こう書けますが

select * from b left join c on b.column=c.column right join a on a.column=b.column

前者はこうは書けません

select * from a left join c on b.column=c.column left join b on a.column=b.column

手動でSQL文を書くときにはあまり気になりませんが
プログラムで動的にSQLを書くときにちょっと順番を気にするのが面倒かな
くらいですかね

なおMySQLの場合、LEFTでもRIGHTでも基本的には効率は変わらないようです

投稿2016/06/15 01:41

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yasha_Wedyue

2016/06/16 00:57

基本的にはRIGHT JOINは使う必要はない(むしろ使わないほうが分かりやすい)が、 3つのテーブルを結合する際には使えるということですね!ありがとうございます! 他の方もご回答ありがとうございました!
guest

0

何らかの理由で、結果表示に基軸となる項目を右側に取る必要がある際に利用します。
例えば、日本語縦書きの書式で表を作る際、軸項目は上辺と右辺に取りますのでこういったときに使えますね。
ただ、実際問題としてそういった必要性に迫られることがほとんどないので私も使ったことはありません。
そう考えると、「right outer join」を使える日が楽しみでなりませんね( *´艸`)

投稿2016/06/21 08:18

to.chan.genkida

総合スコア69

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

RIGHT JOINでできることはLEFT JOINでも当然できるので、RIGHT JOINでなくてはならない都行った事柄はないと考えてよいと思います。

あとは、純然たるソースやあとでプログラムを見たひとがわかりやすいかどうかという話になるかと思いますが、
LEFT JOINとRIGHT JOINが混在するようになるとよくわからないと感じるひともいると思いますので、
どちらでもいいので統一するのがよいかと思います。

とはいえRIGHT JOINを好んで使うひとというのはあまり聞いたことがないので、LEFT JOINで統一するのがいいかと個人的には思います。

投稿2016/06/15 07:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自分としては、LEFT JOINで事足りるのでRIGHT JOINを使う必要性は
ないと思います。

投稿2016/06/15 01:10

tomo.ina

総合スコア357

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

やはりright joinは必要なかったんですね!
可視化して頂きありがとうございました!

投稿2020/08/04 13:55

Shuhei_Muu

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問