- 締切済み
SQLについて教えてください
お世話になっております。 以下、取得したい内容です。 この内容に対して、どのようにSQLを書けばよいか良いか教えて頂きたいです。 (1)DBの全テーブルに対して特定のカラムを取得したい。(カラム名はA,Bとする) (2)取得したカラム.Aに格納されている各値に対して、カラム.Bの各レコードの項目には何の値が格納されているか知りたい。 DBはオラクルですが、オラクルでしか使えないSQL構文はつかないようにしたいです。 自分で考えたSQLは、 SELECT A,B FROM * GROUP BY A,B ですが、そもそも全テーブルを指定する際に使用するのが、「*」では正しくないような気もします。 説明がつたなくて申し訳ございません。 宜しくお願い致します。 ・テーブルイメージ テーブル.test1 +--------+------+ | No | A | B | +--------+------+ | 01 |AA| 1 | | 02 |AA| 1 | | 03 |AB| 2 | | 04 |AB| 2 | | 05 |AC| 3 | | 06 |AC| 3 | | 07 |AC| 3 | +--------+------+ テーブル.test2 +--------+------+ | No | A | B | +--------+------+ | 01 |AA| 1 | | 02 |AA| 1 | | 03 |AB| 2 | | 04 |AB| 2 | | 05 |AC| 1 | | 06 |AC| 3 | | 07 |AC| 3 | +--------+------+ テーブル.test3 +--------+------+ | No | A | B | +--------+------+ | 01 |AA| 3 | | 02 |AA| 1 | | 03 |AC| 2 | | 04 |AC| 3 | +--------+------+
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- bardfish
- ベストアンサー率28% (5029/17766)
FROMのあとにはテーブル名のみですからアスタリスクはエラーになりますね。 で、実はOracleには普段見えない管理テーブルが存在します。 TABLE NAMEとCOLUMN NAMEという項目名があるテーブルなんですが、テーブルの名前は忘れてしまいましたw このテーブルにはカラムのデータ型やデータ長も収められています。 これとは別に、CREATE TABLEで作成されたテーブルの一覧が収められている管理テーブルもあります。 こっちもテーブル名を忘れてしまいましたw ちょっとググってみたら USER_TABLES DBA_TABLES がテーブル一覧。 USER_TAB_COLUMNS DBA_TAB_COLUMNS がカラム一覧。 DESCを使用してどんな項目があるか調べてみてください。 USER_は今ログインしているユーザーが所有しているもの、DBA_はデータベース所有のもの、となります。 ということで、 select table_name from dba_tab_columns where table_name='A' 同一テーブルが複数出てくるようならGROUP BYを使用してください。 (2)に関しては上記のことができてから考えましょう。 たしかWHEREにINを使用すると'A','B','D','G'を含むレコードを抽出するという書き方ができたはずです。固定値だけではなくSELECTも指定できたはず。 詳しくはリファレンスマニュアルをみてください。