やり方はいろいろありますが、
1.「結合後のイメージ」の(名前、番号)の表をつくる
2.1の表にtable2をleft joinしてぶら下げる
でとかはどうでしょう?
"「結合後のイメージ」の(名前、番号)"の表があったとしてこれを仮に"tableX"と名付けておくと
SQL
1//SQL1
2SELECT x.名前,x.番号,t2.縦,t2.横
3FROM tableX x
4LEFT join table2 t2 ON x.名前=t2.名前 AND x.番号=t2.番号
で、tableXはどう作るかというとこれで作れる。
SQL
1//SQL2
2SELECT 名前,番号 FROM table1 UNION SELECT 名前,番号 FROM table2
SQL2をSQL1に代入して
SQL
1//SQL2
2SELECT x.名前,x.番号,t2.縦,t2.横
3FROM (SELECT 名前,番号 FROM table1 UNION SELECT 名前,番号 FROM table2) x
4LEFT join table2 t2 ON x.名前=t2.名前 AND x.番号=t2.番号
一応完成。
(追記)
一応完成なんですが、性能とかの問題になるとまた別です。たとえば
SQL
1//SQL3
2SELECT t1.名前,t1.番号,t2.縦,t2.横 FROM table1 t1 LEFT JOIN table2 t2 ON t1.名前=t2.名前 AND t1.番号=t2.番号
3UNION
4SELECT 名前,番号,縦,横 FROM table2
こっちの方が大概の場合効率的でしょう。いずれもUNIONが重複をマージするという仕様を利用してますが、SQL2はキーの重複を除いてからキーでない情報を付加しているのに対し、SQL3は重複ありで抽出してから重複を除去してます。
※性能云々はおいておいてSQL2の方が論理的にはわかりやすいと思うのは個人的な感想。