• ベストアンサー

複数のDBから抽出

失礼致します。 質問させてください。 今DB1からTable1(2レコード)を、DB2からTable2(3レコード)を呼び出し、 それぞれのテーブルに入っている名前とEmailを取り出した後一つの表として画面上に出力しようとしています。 名前1 Email1 //DB1由来 名前2 Email2 //DB1由来 名前3 Email3 //DB2由来 名前4 Email4 //DB2由来 名前5 Email5 //DB2由来 のようになります。 ここで、名前に被りがあった場合どのように排除すればいいでしょうか? 一つのDBなら2つのテーブルでダブったレコードを処理させることができますが、違うDBからだとやり方がわかりません。例題にも違うDBからのレコード比較は念頭においてないようで、情報がなく苦労しています。 どうすればいいでしょうか? テンポラリーを使うのは、メモリーの問題もありあまりしたくありません。なお、データの型は一致しています。 環境; MySQL JDBCドライバ Eclips 3.1.0 Struts

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

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

  • ベストアンサー
noname#45950
noname#45950
回答No.1

2回目のSQL文に、1回目で取ってきたデータの名前ははじくように記述したらどうですか?

javatea_1985
質問者

補足

各メソッドを用意しておいて、 for (int i=0; i<a.size(); i++) { tmp1 = (a.get(i)).getName(); for (int j=0; j<b.size(); j++) { tmp2 = (b.get(i)).getName(); if (tmp1.equals(tmp2)) { Arr.add(tmp1); arr1.add(new Integer(i)); arr2.add(new Integer(j)); } } } という形で処理を行いたいと思います。 ありがとうございました。

関連するQ&A

  • DB検索について

    (1)PHPにてSQLをコールしてテーブルから情報の取得を行いたいのです。  $cmnd = "select * from table_a where id=01";を実行し(fetch使用)  仮に15件セレクトされたとすると、抽出された15件は  プログラム内のどこに格納されるのですか? (2)また、そのレコードを順じ処理する場合において、終了条件はどの様に  判定したら良いでしょうか?  DB:oracle

    • 締切済み
    • PHP
  • DBから複数テーブルを早く表示するには?

    [table1] ID name age -------------- 01 太田 30 02 田中 58 03 鈴木 23 [table2] ID item01 ---------- 01 AA 02 CC 02 DD [table3] ID item02 ---------- 02 ee 02 ff 03 gg ASPを勉強中です。 oracleの[table1]~[table3](上記)を連結し、ASPで次の様なHTML(一覧表)を表示したいです。 ----------------- ID :01 name :太田 age :30 item01 :AA item02 : ----------------- ID :02 name :田中 age :58 item01 :CC、DD item02 :ee、ff ----------------- ID :03 name :鈴木 age :23 item01 : item02 :gg ----------------- 現在、ASPから「select * from table1」というSQL文をoracleに投げ、返されたダイナセットをVBScriptの「Do~Loop」で1レコードずつHTML表示しています。 item01を表示させる部分では「SELECT item01 FROM table2 WHERE id = table1のid」をoracleに投げ、返されたダイナセットすべてを表示しています。 (item02表示部分も同様) この方法では、1レコード表示毎にitem01,02部分で別のSQL文を走らせるので、100件程度のデータの表示に10秒近くかかってしまいます。 これを少しでも早くするにはどうしたらいいでしょうか? VBScriptの構文、SQLのこんなコマンドを使えば良い、oracleのテーブル内容の見直し、等々ご助言があればお願いします。 DB:Oracle9i サーバ:Windows2000 プログラム:ASP 接続環境:oo4o

  • JDBCでテンポラリテーブルを扱う

    JDBCを使って、テンポラリテーブル(DBはMySQL)を作成したのですが、CREATE文を発行したクラス内では、INSERT,SELECTできるのですが、別クラス(別画面から別業務クラス)で、テンポラリテーブルにアクセスしようとすると、 テーブル名 doesn't exist というエラーが出てアクセスできません。 どこに原因があると考えられるでしょうか?

    • ベストアンサー
    • Java
  • VBAによるレコードの追加について。

    同じテーブル構造をもつ2つのテーブルあり、Aという名前のテーブルにBという名前のテーブルの1レコードを1度に追加するには、ACCESS2003のVBAでは、どのように記述すればよいのでしょうか?イメージは、下記のとおりです。 Set TBL = DB.OpenRecordset("A", DB_OPEN_TABLE) Set TBL2 = DB.OpenRecordset("B", DB_OPEN_TABLE) Do Until TBL2.EOF TBL.AddNew TBL = TBL2 ‘← ココの記述が分かりません。 TBL2.MoveNext TBL.Update Loop

  • DB(MySQL)から複数行のデータを取り出す方法

    最近PHPを勉強していて、初歩的な質問で申し訳ないのですが どうしてもわからないので質問させていただきます。 例えば、MySQLに以下のようなデータがあります。   年齢 名前 性別   28  AAA  男   20  BBB  男   25  CCC  女 ここで男のレコードだけ取り出したいと思い 以下のようなコードを書きました。   //MySQLへデータを保存する。   mysql_connect("localhost","root","");   mysql_select_db("DB名");   //データの取得   $id = mysql_query("SELECT '年齢','名前','性別' FROM テーブル名 WHERE '性別' = '男'");   $array=mysql_fetch_row($id); この場合、2行のレコードが選ばれるはずですが 後ろのレコードへのアクセスの仕方がわかりません。 $arrayには性別=男に該当する、一行目のレコードが入っています。 二行目のレコードへはどうやってアクセスすればよいのでしょか? 調べてもなかなかうまくいかずご質問させていただきました。 ご回答お願いします。

    • ベストアンサー
    • PHP
  • JDBCレルムによるFORM認証

    お世話になります。 StrutsのJDBCレルムによるFORM認証について教えて下さい。 パスワードをSHAで暗号化したテーブルを使ってj_security_checkによる認証をさせたいのですが認証エラー(ID、Passwordが誤っています。 )となってしまいます。 DBはMySQLです。 SQLのログを見ると「SELECT password FROM users WHERE email = 'メールアドレス';」というログしか出ません。 このSQLをMySQLで実行すると暗号化されたパスワードが取得されます。 暗号化の方法が間違っているのか、JDBCレルムの指定が間違っているのかのいずれかとは思うのですが切り分け方法がわかりません。 TOMCATのログにもそれらしき情報が出ていないのですが、どのようにしたら認証エラーとなっている原因を調べることができるのでしょうか?

  • 複数行のクエリを、まとめて実行するには?mysqli_multi_query()?

    PHPとMySQLの環境です。 複数行のクエリを、まとめて送って取得したいと考えています。 ですが、今試行錯誤しているのですが、うまく行かない状態で、クエリをきちんと実行できません。 処理の流れとしては、 [DBにアクセス]→[2つのクエリの実行]→[データ取得]→[DBをクローズ] でいいのではないかと思ってやっているのですが、 2つのクエリを実行するのはなにやら無理なような記述もウェブ上で拝見しました。 その場合、同じDBの同じテーブル内の異なるデータを取得したいだけなのに、 わざわざ、一度DBにコネクトして、切断、そしてまたコネクトして、切断ということを繰り返さないとダメなのでしょうか。。? そもそも同一PHPファイル内で二度も接続、切断はすべきではないですか? ちなみに、 一つ目のクエリでは、テーブル(table_a)のレコード数をカウントしてPHP側で取得するという流れの処理です。 $query = "SELECT count(*) FROM `table_a`"; もう一つのクエリは、テーブル(table_a)の最新のレコードの、idカラムのidを取得するだけのものです。 $query = "SELECT arrayset FROM `table_a` ORDER BY id DESC LIMIT 1"; この処理を一度のクエリで入れ込むことは可能でしょうか。 それぞれ単独では実行できます。 PHPでこのような関数 mysqli_multi_query() を見つけて色々調べているのですが、 いまだに使用方法がきちんとつかめない状況です。 これで複数のクエリを送ることは可能でしょうか。 アドバイス宜しくお願いします。

    • ベストアンサー
    • MySQL
  • DBデータをcsvで出力の際カンマでエラー

    下記の構文で、mysqlのデータをcsvに出力したいのですが、 カンマ区切りのカンマ部分でエラーになります。 phpかmysqlの設定なのでしょうか? どなたかご教授お願いいたします。 ---以下スクリプト header("Pragma: cache;"); header("Content-type:application/x-csv"); header("Content-Disposition: inline; filename=db_out.csv"); mb_language ('Japanese'); $db = DB::connect($dsn); if(DB::isError($db)){ die($db->getMessage()); } $sql = "select email,adress,date from table "; $result = &$db ->query($sql); if(DB::isError($result)){die($db->getMessage());} while ($record = $result->fetchRow(DB_FETCHMODE_ASSOC)) { $csv_line =&sprintf("%s,%s,%s\n" ,$record['date'] ,$record['email'] ,$record['adress']); print(mb_convert_encoding($csv_line, "SJIS", "EUC-JP")); } $db->disconnect(); --------------ここまで エラー内容 Parse error: syntax error, unexpected ',' 行数を見ると csv_line =&sprintf("%s,%s,%s\n" この行です。 環境は php4.4.4 mysql4.1.21 FreeBSD Apche1.3.37 です。よろしくお願いします。

    • 締切済み
    • PHP
  • アクセス テーブルデータ他のテーブルにコピーVBA

    win10 access365のmdbファイルにおいて table1のフィールド1がID 数値型 長整数型 値要求あり 重複あり フィールド2が氏名 短いテキスト型 225 値要求なし 重複あり  table2;フィールド1がID 数値型 長整数型 値要求あり 重複あり フィールド2が氏名 短いテキスト型 225 値要求なし 重複あり  上記に置いて table2の新しいデータとして table1のデータをコピーしたい、 ただしtable1には レコードは1行だけとします (table1にレコードが複数行ある場合の最新レコードだけtable2にコピーも出来れば知りたいです) アクセス付属の更新クエリーでは、どうも うまくいきません sqlにおいて UPDATE table1, table2 SET table2.ID = [table1]![ID], table2.氏名 = [table1]![氏名]; 上記動作しません Function table1から2() Dim db As DAO.Database Dim rst As Recordset Dim TB As Table Dim Rdset As Recordset On Error Resume Next Set db = DBEngine(0)(0) Set Rdset = db.OpenRecordset("table2", DB_OPEN_TABLE) Rdset.AddNew Rdset![ID] = Table![table1]![ID] Rdset![氏名] = Table![table1]![氏名] Rdset.Update End Function table1, table2を それぞれ 同名のフォームを作り Function table1から2() Dim db As DAO.Database Dim rst As Recordset Dim fm As Form Dim Rdset As Recordset On Error Resume Next Set db = DBEngine(0)(0) Set fm = Forms![table1] If Rdset.BOF Then Exit Function Else Set Rdset = db.OpenRecordset("table2", DB_OPEN_TABLE) Rdset.AddNew Rdset![ID] = Forms![table1]![ID] Rdset![氏名] = Forms![table1]![氏名] Rdset.Update End If End Function いずれも table2のデータ更新が なされていません すみません 宜しくお願い致します

  • 【sqlite3】deleteしても.dbファイルのサイズは減らない?

    DB及びSQLに詳しい方、教えてください。 sqliete3を使ってます。 insertしたレコードをdeleteしても.dbファイルのサイズは小さくならない 様なので、テーブルのカラムに削除フラグを設けて、削除はdeleteコマン ドでレコードを削除する代わりに、フラグのupdateとし、 レコード挿入の場合は、フラグが立ってるレコードを見つけて、そのコー ドを更新(フラグが立ってるレコードが無い場合はinsert)とする仕様に してみようかと考えてます。 もちろんselect時は、フラグの立ってるレコードをwhere句で除外するつも りです。 そこで、質問なのですが、フラグの立ってるレコードを一つselectして該 当レコードをupdateするには、どのようなSQLになるでしょうか? フラグが立つレコードは複数もしくは無い事が考えられるので、例えば、 update table01 set col = 'hogehoge' where flag = 1; では上手く機能しないと考えます。 複数レコードが選択された場合は、任意のレコードを選んで更新、また、 レコードが一つも選択されなかった場合の条件判定(後のinnsert)は、 どのように記述したらよいのでしょうか? ※そもそも、そんな事しなくても他にもっと良い方法があるよ。  といった場合は、その方法を伝授してください。 それでは、ご指導のほど、宜しくお願いいたします。

専門家に質問してみよう