三つのテーブルを以下のように用意しました。
mysql
1mysql> select * from tb; 2+------+------+------+ 3| bang | uria | tuki | 4+------+------+------+ 5| A103 | 101 | 4 | 6| A102 | 54 | 5 | 7| A104 | 181 | 4 | 8| A101 | 184 | 4 | 9| A103 | 17 | 5 | 10| A101 | 300 | 5 | 11| A102 | 205 | 6 | 12| A104 | 93 | 5 | 13| A103 | 12 | 6 | 14| A107 | 87 | 6 | 15+------+------+------+ 1610 rows in set (0.00 sec)
mysql
1mysql> select * from tb3; 2+------+--------------+ 3| bang | ken | 4+------+--------------+ 5| A101 | 東京都 | 6| A102 | 埼玉県 | 7| A103 | 神奈川県 | 8| A104 | 北海道 | 9| A105 | 静岡県 | 10+------+--------------+ 115 rows in set (0.00 sec)
mysql
1mysql> select * from tb1; 2+------+--------+------+ 3| bang | nama | tosi | 4+------+--------+------+ 5| A101 | 佐藤 | 40 | 6| A102 | 高橋 | 28 | 7| A103 | 中川 | 20 | 8| A104 | 渡辺 | 23 | 9| A105 | 西澤 | 35 | 10+------+--------+------+ 115 rows in set (0.00 sec)
bang(番号)をキーに結合したら、以下のような結果が出ました。
教科書に載ってた結果には、テーブルtbと同じbangの順番で、A103→A102→A104→A101→A103→A101のように出力されていたのに対し、以下の結果では、A101はA101でまとめて表示し、A102も二つまとめて表示する、というようになっています。
mysql
1 2mysql> select 3 -> tb.bang,tb.uria,tb1.nama,tb3.ken 4 -> from tb 5 -> join tb1 6 -> using(bang) 7 -> join tb3 using(bang); 8+------+------+--------+--------------+ 9| bang | uria | nama | ken | 10+------+------+--------+--------------+ 11| A101 | 184 | 佐藤 | 東京都 | 12| A101 | 300 | 佐藤 | 東京都 | 13| A102 | 54 | 高橋 | 埼玉県 | 14| A102 | 205 | 高橋 | 埼玉県 | 15| A103 | 101 | 中川 | 神奈川県 | 16| A103 | 17 | 中川 | 神奈川県 | 17| A103 | 12 | 中川 | 神奈川県 | 18| A104 | 181 | 渡辺 | 北海道 | 19| A104 | 93 | 渡辺 | 北海道 | 20+------+------+--------+--------------+ 219 rows in set (0.00 sec) 22
この挙動には何か原因や意味があるのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/08 11:26