結合して抽出しているテーブルの元データを分かりやすく取る方法についてです。
ちょっとこれだけだと分かりにくいので補足説明。
例えばテーブルwork1、work2があって結合してデータを抽出している。
その際に、抽出できるwork1とwork2の元データをそれぞれ取り出したい。
そんなの簡単。結合して抽出するSQLのSELECTでアスター(*)つければ全部取れるじゃんって思うだろうけど、そうじゃない。
なぜなら、テーブルの列の数が増えれば増えるほどwork1とwork2の列の区切りが分かりにくい。
(例えばwork1が100列あって、work2も100列あったらすぐにどこが区切りか分からない。)
また、結合するテーブルが増えると余計分かりにくい。
(1、2テーブルの結合だとまあなんとか大丈夫だけど、10テーブルとか結合しているときつい。)
という問題を抱えている。
そういった問題を解決する方法を考えてみた。
早速SQLです。
CREATE TABLE #work1 (id int ,name varchar(10) ); CREATE TABLE #work2 (id int ,name varchar(10) ); INSERT INTO #work1 ([id], [name]) VALUES (1, 'test1'); INSERT INTO #work1 ([id], [name]) VALUES (2, 'test2'); INSERT INTO #work2 ([id], [name]) VALUES (1, 'test12'); INSERT INTO #work2 ([id], [name]) VALUES (2, 'test22'); SELECT 'work1|' AS 'work1|',#work1.*,'work2|' AS 'work2|',#work2.* FROM #work1 INNER JOIN #work2 ON #work1.id = #work2.id
実行結果
ポイントは2つある。
1つめは抽出結果の中にテーブル名と区切り文字(|)を出力するようにして、テーブルとテーブルの区切り目がわかりやすいようにした。
2つめはテーブル名.*で、対象テーブルの列を全て取るようにしてシンプルにしている。
こうすることにより、結合して出力されたテーブルの元データを分かりやすく抽出できる。
以上!!