• ベストアンサー

Accessから”表名.カラム名”でデータが取り出せない

 Java(sdk1.4.2)よりSQLを発行し、Access(2002)のMDBを操作しています。 複数テーブルをJoinで接続し、データを抽出しているのですが、対象2テーブルに同じ"haneibi"と云う項目が有るので、レコードセットからの取り出し処理の際に” wk_T1haneibi = rs.getString("表名.haneibi”)と云う記述をした所、SQLException Column Not Foundで処理が終了してしまいます。 wk_T1haneibiはStringで、haneibiも文字型のデータが入っています。 過去、表名.カラム名で修飾をした際、同じ事態に陥り、ユニークなカラム名だったので表名の修飾を外した所、事態が解消しました。今回は重複名を変更出来ない為、安易な回避が出来ず困っております。 尚、Joinのパラメータでは”表名.カラム名”の修飾が何故か問題なく出来ています。 事態解消にお手をお貸し下さいまし。

  • Java
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

ResultSetMetaDataを取得してカラム名を表示させてみてはいかがでしょう? そうすればAccessからどのようなカラム名で取得されているのかわかりますよね。

Adenau
質問者

お礼

 とりあえず原因究明の足掛かりとなりました。 結局、取り出せない事態は解決しませんでしたが、カラム名重複項目の内容がどちらも表示対象から除外されたので、結果オーライとなりました。

Adenau
質問者

補足

 多少てこずりましたが、ResultSetMetaDataを表示させて見ました。すると、どちらも"ColumnName = hanneiBi"と云う表示がされています。 どうしたら、分けて取り込めますでしょうか…。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

”表名.カラム名”の個所を ”[表名].カラム名”の個所をとすると、どうなりますか? "."は半角で記述してありますね?

Adenau
質問者

補足

回答有難うございます。 "."は半角で有る事を確認の上、"[表名].~"を実行してみました。残念ながら発生箇所と事態(Column not found)に変更は有りませんでした。

関連するQ&A

  • 複数テーブルから全データ取得する際、同カラムあり

    SELECTで複数テーブルから、全カラム値を取得する際、同名カラムがあったとき、指定テーブルの値を取得したいのですが、どうすれば良いでしょうか? ◆前提 ・テーブル「r1」 ・テーブル「t1」 ・テーブル「u1」 ※「r1」「u1」には、同名カラム「z2」あり ◆やりたいこと ・条件一致する全てのデータを取得したい ・但し、「z2」カラムの値は、「r1」テーブルの値を取得したい ◆現状 $sql="SELECT * FROM (`r1`) JOIN `t1` JOIN `u1` ON `r1`.`tid` = `t1`.`tid` And`r1`.`uid` = `u1`.`uid`"; ◆疑問 3つのテーブルから条件一致するデータを全て取得しているのですが、 「r1テーブル」「u1テーブル」に同じカラム名(z2)があるためか、 取得結果のz2内容が、「u1テーブル」の「z2カラム」値となっています(多分…)。 この時、「r1テーブル」の「z2カラム」を取得するには、どうすれば良いでしょうか? (「r1テーブル」の「z2カラム」だけを単独で取得したいわけではなく、「SELECT * 」結果した際の「z2カラム」の値を「r1テーブル」のものにしたいです)

    • ベストアンサー
    • MySQL
  • 同一カラム名でjoinしたところ、指定できない

    SQLiteを使い始めました。 テーブルと結合(join)して あらたなテーブルを作ったのですが rankという同じカラム名があったので結果的に、rankとrank:1というカラム名が出来てしまいました。 次にこれを指定しようとして、rank.hogeではOKでしたが、rank:1.hogeでは駄目だと 怒られます。 これを解決する方法はないのでしょうか。。。(あらかじめ同じカラム名に ならないようにしておく、ということでしょうか?)

  • javaにてデータ取得

    JAVAカテゴリーで質問しようかこちらにしようか迷ったのですが。。。 あるテーブルを以下の様に内部結合しています。 select * from t_table a, t_table b where a.id=b.id and a.no=0 and b.no=1 この時、t_tableのあるカラムtestcolを取得したいとおもっております。 言語はjavaで、データベースはpostgreSQLです。 rs.getString("testcol"); rsはResultSetオブジェクトです。 これで、データは取得できるのですが、条件のt_tableの別名aのデータ が取得されます。別名bの方を取得したいと思い、単純に rs.getString("b.testcol"); 等としたら、「カラム名がありません」というエラーになりました。 getStringのパラメータとして、カラムインデックス(数値)も 指定できるので、それで行うと取得可能でした。 カラムインデックス指定ですと、プログラムのメンテナンス上支障をきたす ので、なんとか、カラム名の指定で行いたいと思っておりますが、 どうすればいいのでしょうか?

  • カラム名を取得

    テーブルの中のカラム名を取得するにはどうすればいいでしょうか? データがどのカラムに入っているかを調べたいのです。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • コラム名でテーブルを検索できますか?

    SQL & ORACLE初心者です。最近、セレクト文を使って、テーブル内のデータを取り出すことができるようになりましたが、逆にコラム名からテーブルを検索することはできるでしょうか。 例えば、TABLE_A内のコラムの中にCOLUMN_Aという名前のコラムがあるとして、このコラムが他のテーブルでも使われているかどうか、いるとしたらどのテーブルかを知りたいのです。また、COLUMN_Aと別のCOLUMN_B(それぞれが単独で記載されているテーブル名はわかっているとします)が一緒にある一つのテーブルで使われているかどうか、またそのテーブル名を知りたいときには、どのようなSQLを書けばよいでしょうか。 DBAやその他DBを構築するための知識をお持ちの方、ご回答をお待ちしています。

  • カラムにデータがあるかないか確認したいです。

    環境:mySQL、PHP セレクト文で対象カラムの中にデータが入っているか否かを 確認するphpの書き方を教えていただけないでしょうか。。 例: たとえば、カラム名 no に1が入っていて そのレコードにある bunsyo の中にデータが入っているか否かを確認したいと 考えてます。 $kakunin = mysql_query("select bunsyo from テーブル名 where no=1 "); 上記だとデータを参照するだけなので、、、 入っているかいないかを確認したいと考えてます。 返ってくるのが true=1、false=0 とかで返ると次の処理がしやすいので助かります。。。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 複数のテーブルからデータを取得したい

    1つのテーブルから重複したデータを取り除いて表示するときに使う 【select distinct カラム名 from テーブル名;】 がありますよね。 それと同じようなことを複数のテーブルをまたいで行いたいのですがうまくいきません。 ちなみに両方のテーブルのカラム名は同じです。 【select distinct カラム名 from テーブル1 union select distinct カラム名 from テーブル2;】 としても重複を取り除いた後にテーブルを結合してるので結果的に両テーブルの重複した値を取り除くことができず。 そこで 【select distinct T1.カラム名, T2.カラム名 from テーブル1 T1. テーブル2 T2;】 としてみたのですが、クエリを実行中のまま反応がないので悩んでます。 ちなみに2つのテーブルのデータはそれぞれ2万件ほどです。 こういう時どういうsql文を組むのが正しいのでしょうか?

    • ベストアンサー
    • MySQL
  • oracle日本語カラム名

    ただ今お客様の要望でカラム名、及びテーブル名を日本語で作成しております。accessで情報を見れるよう考えています。 oracle10gで作成したところカラム名、及びテーブル名を英語で作成したときより検索に大幅に時間がかかるようになりました。どなたか原因を知っている方は教えていただきたです。 ちなみにデータ容量は約100万件1.5G程度です。

  • ストアド内でカラム名一覧を取得

    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ストアド内でカラム名一覧を取得、カンマで繋げてひとつの変数にまとめたい。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 現在開発でストアドを使用する機会があり、そこで不明点が発生し悩んでおります。 以下、現状と質問です。 ■SQL SERVER 2000 ■テーブル(※)のカラム名一覧を取得し、  カラム名をカンマで繋げてひとつの変数に格納したいと思っています。  ※先の処理でカラムを取得したいテーブルをSELECTしており、  対象のテーブル名を変数に代入しています。  カラム一覧を取得するにあたり、以下のようにカーソルで習得し、  FETCHでカラム名を変数に格納しようと考えていましたが、  「'対象テーブル名'」には変数がいれられないので、どうしようかと悩んでいます。  DECLARE CURS_test CURSOR FOR   SELECT name FROM dbo.syscolumns   WHERE id IN   (SELECT id FROM dbo.sysobjects WHERE name = '対象テーブル名')   ORDER BY id, colid;  「sp_executesql」を使用してselect文を流そうとしたのですが、  複数ある列名を取得して、上記で記載しましたように  カラム名をカンマで繋げてひとつの変数に格納する方法がわかりませんでした。  こういった場合、どのように考えて、どのように書けばよいのでしょうか。  まだ触り始めたばかりで、わからないことがわかっていない部分もあり、  質問内容でわかりにくい部分がありましたらご指摘いただければと思います。  どうぞよろしくお願いいたします。

  • 在庫管理などのMySQLのカラム名の付け方

    お世話になります。 MySQL5.6使用です。 MySQLでのカラム名の付け方について教えてください 現在、各レコードが商品ごとで、カラムが日付けごとのテーブルがあります。 各値は、その日の在庫総数が入力されています。     2016-12-01 2016-12-02 2016-12-03   ・・・・・  商品A  100     90     70 商品B  100     80     60 商品C  100     70     50 前日からの在庫数の変化や 任意の期間の在庫数の変化をデータとして取りたいと思っています。 例えば、商品Aでいうと 12月2日は、前日と比べて10個減少。 12月3日は、前日と比べて20個減少。 12月3日は、2日前と比べて30個減少。 12月1日~12月3日までの各商品の在庫数の変化の値やグラフ といった感じです。 MySQLで数値を取り出す時のカラム名を指定する場合に、 上記のようなカラム名だと、日付を指定(カラム名を入力)する時に 「2016-12-01」「2016-12-02」「2016-12-03」といった表示形式に 変更しないといけないと思いますが、 通常、このような場合、どのようなカラム名を利用されいるのでしょうか? 個人的には、シリアル値のテキスト文字で カラム名を持った方が、後々に、利用勝手が良さそうな気がしています。 例えば、エクセルのVBAから MySQLのデータを取り出すと想定したとき、 VBA側でDate関数などを利用し、 テキスト文字をformat関数で修正すれば、同じことかもしれませんが 一般論的にどのようなカラム名が利用されるかが知りたいです。 ---- また、少し別件となりますが、 このようなテーブルの持ち方は良くない方法でしょうか? このような形でテーブルを持つと、 カラムが理屈上は永遠に増えることとなります。 テーブルの構成の仕方なども アドバイスいただける幸いです。 どうぞよろしくお願いします

    • ベストアンサー
    • MySQL

専門家に質問してみよう