表題の件で質問です。
以下二つのテーブルをRIGHT JOINする際の挙動イメージとそれに関連していくつか質問です。
ユーザー
user_id | name |
---|---|
1 | kento |
2 | shogi |
3 | kenta |
4 | yuki |
投稿
id | post | user_id |
---|---|---|
1 | HI1 | 1 |
2 | HI2 | 2 |
3 | HI3 | 3 |
4 | HI4 | 4 |
5 | HI5 | 5 |
以下のSQLを発行します
sql
1 select * from users 2 right join posts 3 on users.id = posts.user_id;
テーブルを結合する際は以下の認識です。
①left join、right joinに関わらずfromの後に書かれたテーブルが結合元(表示結果の左側のテーブル)
【参考】
【INNER JOIN, LEFT JOIN , RIGHT JOIN】テーブル結合の挙動をまとめてみた【SQL】
②結合の挙動は結合元のテーブルのレコードが条件に基づき1レコードずつ結合先のレコードを参照し、条件に合致すれば自分の右にくっつける。
usersテーブルの先頭レコードがpotstテーブルを上から下まで走査し、終了するとusersテーブルの2番目のレコードが同じことを繰り返す。
質問
①
私の認識はあっていますか?
②
仮に最初に書いたSQL(right join)を発行した場合も
usersテーブルの先頭レコードがpotstテーブルを上から下まで走査し、終了するとusersテーブルの2番目のレコードが同じことを繰り返す。という認識はかわらず、どことも紐づかなかったpotstの最後のレコードを右側に表示するのですよね???
画像で示した矢印もright joinだからといってpostsから引かれる訳ではないですよね(あくまでイメージです。どちらから線を引いても答えは同じですが、、、)
上手く伝わっているか分かりませんが、レベルアップのため、私の考え方が合理的なのか知りたいです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。