アプリ版:「スタンプのみでお礼する」機能のリリースについて

テーブル名をカラムとして取得する方法はありますでしょうか?
オラクル8とVB6でプログラムを組んでいます。


TABLE Aの内容
カラム1
1
2
3

TABLE B
カラム1の内容
4
5
6

SQLは簡略化してかきます。下記のSQLを実行した場合、
select A.カラム1 from A
union
select b.カラム1 from b

1
2
3
4
5
6
を取得できます。


例えば、上記で、SQL実行後、
下記のような値を取得したいです。
1 ,Aのテーブルだよ
2 ,Aのテーブルだよ
3 ,Aのテーブルだよ
4 ,Bのテーブルだよ
5 ,Bのテーブルだよ
6 ,Bのテーブルだよ

それぞれのテーブルの名前を別名で結果に格納したいのです。

何か方法はありますでしょうか?

なければ、unionせずに、2回SQLを発行し、それぞれに、
プログラム上で、「Aのテーブルだよ」を後で挿入したいと思っています。

A 回答 (3件)

order by 指定なら何番目の列って指定も出来るので以下のようにも


指定できるでしょう。

select A.カラム1,'Aのテーブルだよ' from A
union
select b.カラム1,'Bのテーブルだよ' from b
order by 2

それか、列名をつければテーブルから抽出してきたデータと
なんら変わりなく使うことが出来ると思います。

select A.カラム1,'Aのテーブルだよ' hoge from A
union
select b.カラム1,'Bのテーブルだよ' hoge from b
order by hoge
    • good
    • 0
この回答へのお礼

できました。
ありがとうございます。

お礼日時:2009/08/25 16:12

Oracle8 に user_tab_columns 仮想表があったかどうかは定かではありませんが、以下をどうぞ。



select TABLE_NAME, COLUMN_NAME from user_tab_columns where table_name in ( 'TABLE1', 'TABLE2')

詳細はuser_tab_columns 仮想表をぐぐって調べてください。
ポイントは IN 句の検索するテーブル名は大文字で指定してくださいね(よくやるミス)

※ Oracle10g (10.2.0.4)で確認済

この回答への補足

ありがとうございます。
こういう方法もあるんですね。勉強になりました。

補足日時:2009/08/25 16:15
    • good
    • 0

select A.カラム1,'Aのテーブルだよ' from A


union
select b.カラム1,'Bのテーブルだよ' from b

って、固定で結果に入れてしまうのはどうでしょう?
オラクル自体あまり得意ではないので(SQLサーバが主に使ってるので)
書き方が間違っているかもしれませんが、SQL言語としては
間違ってないと思います。。。

この回答への補足

ありがとうございます。いけそうです☆
ちなみに、この場合のORDERBY の場合、

select A.カラム1,'Aのテーブルだよ' from A
union
select b.カラム1,'Bのテーブルだよ' from b
order by カラム1

まではできるのですが、
○のテーブルだよ
は、どのようにorderby 指定できるのでしょうか?
もしご存知でしたらでよいですが、よろしくお願い致します。

補足日時:2009/08/25 14:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A