• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UNIONする際、片方テーブルしかないカラムも利用)

UNIONする際、片方テーブルしかないカラムも利用

このQ&Aのポイント
  • UNIONを使用してテーブルを結合する際、片方のテーブルに存在するカラムも利用したい場合、どのようにすればよいでしょうか?
  • 現在、UNIONを使用してテーブルAとテーブルBを結合していますが、テーブルAにのみ存在するカラム「age」も結果に含めたいです。
  • UNIONした後の結果に、片方のテーブルに存在するカラムも含める方法はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.2

とりあえず、解決はしているようですので、補足で書かれていた疑問について ■疑問1 ・ダミーと言うのは一般的な(よく利用する)手法でしょうか? →普通に使います。  ただし、Nullなどダミーを使わないほうのSelectで取得できない値にするのが普通です。 ■疑問2 ・SELECTする際、存在しないカラム名を文字列で指定すると「Unknown column」エラーになるのに、数字だとなぜエラーにならないのでしょうか? →固定の値と判断しているからです。  他に、固定の値を返す関数(例えば現在日時とか)やNullでもエラーにはなりません。 ■疑問3 …ダミーでSELECTする際の「ダミー指定方法」 ・「影響が少ないだろうと思われる存在カラム」を指定した方が良い? それとも、-1などの存在しないカラム(?)を指定した方が良い? もしくは気にする必要はない? →上記参照。 なお、以下のselectを実行してみるとより理解できるかも。 select 'A' as AText, 2 as BNumber from table1 table1の件数分、A 2 と出てきます。 select 'A' as AText, 2 as BNumber from table1 union select 'C' as AText, 4 as BNumber from table1 とするとtable1の件数分、A 2 とC 4が出てきます。(2倍の件数でるはずです。)

re97
質問者

お礼

回答ありがとうございました。 >Nullなどダミーを使わないほうのSelectで取得できない値にするのが普通 >固定の値と判断しているからです。 >他に、固定の値を返す関数(例えば現在日時とか)やNullでもエラーにはなりません ・初めて知りました ・大変参考になりましたー

その他の回答 (2)

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.3

疑問2 についてさらに補足回答 存在しないカラム名はどんな場合もエラーです。データは空文字列やnullとして与えて as カラムエイリアスとするなら、存在しない名前もokです。 出力表示のカラム名は、最初のselect節で指定したものになるので、union 以降のselect節ではエイリアス名は無くてもよいですが、データ内容(固定値、存在するカラム値、計算値など)は必要です。

re97
質問者

お礼

回答ありがとうございました。 >存在しないカラム名はどんな場合もエラーです。データは空文字列やnullとして与えて as カラムエイリアスとするなら、存在しない名前もokです ・補足説明ありがとうございます ・勉強になります ・こういう細かい所をきちんと学んでいくのが大事なのだと改めて思いましたー

回答No.1

後で別にSELECTするのでなくUNIONのついでに取りたいのなら、B側にダミーでageを付け加えてやったらどうでしょう。   SELECT \'A\' tablename, s.id, s.level, s.age FROM A s    UNION ALL   SELECT \'B\' tablename, r.group_id, r.level, -1 age FROM B r ダミーのageの値を何にするかは目的次第でしょうけど。 怒られるかな…。

re97
質問者

補足

回答ありがとうございました。 早速試したところ、無事目的の結果を得ることが出来ました。 出来たのですが、新たな疑問点が… >後で別にSELECTするのでなくUNIONのついでに取りたいのなら、 ・希望としては、UNION結果を取得した後で、SELECTしたかったのですが、特にこだわりがあるわけではありません(何となくこちらの方が一般的かなと思っただけです) >B側にダミーでageを付け加えてやったらどうでしょう ・こういう発想はなかったのですが、ダミーと言うのは一般的な(よく利用する)手法なのでしょうか? >ダミーのageの値を何にするかは目的次第でしょうけど ・今回、検索目的だったため、影響が少ないだろうと思われる存在カラム(r.id)を指定してみたのですが、それでもイけました ・「-1 age」て何だろうと思い、「-1」や「-2」にしてみたのですが、それでもイケました ・個数さえ合えば何だっていいのか、存在しないカラム名も指定できるのか、と思い、単純なSELECT文で色々試してみたのですが、数字以外だと、#1054 - Unknown column 'ダミー' in 'field list'エラーになりました ■疑問1 ・ダミーと言うのは一般的な(よく利用する)手法でしょうか? ■疑問2 ・SELECTする際、存在しないカラム名を文字列で指定すると「Unknown column」エラーになるのに、数字だとなぜエラーにならないのでしょうか? ■疑問3 …ダミーでSELECTする際の「ダミー指定方法」 ・「影響が少ないだろうと思われる存在カラム」を指定した方が良い? それとも、-1などの存在しないカラム(?)を指定した方が良い? もしくは気にする必要はない?

関連するQ&A