• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLで複数データベースの一致比較する方法)

SQLで複数データベースの一致比較する方法

このQ&Aのポイント
  • SQL文を使用して複数のデータベースの一致比較を行う方法について説明します。
  • 具体的な例を挙げて、入力として受け取った値を元にデータベースから検索を行い、結果を比較する手順を解説します。
  • C言語を使用している場合とSQLのみを使用している場合の処理時間の比較についても触れます。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

すなおにやればこんな感じでしょうか? //準備 create table tiikiA(id int,name varchar(30)); create table tiikiB(id int,name varchar(30)); create table kenA(id int,name varchar(30)); create table kenB(id int,name varchar(30)); insert into tiikiA values(1,'東北'),(2,'関東'),(3,'中部'),(4,'九州'); insert into tiikiB values(1,'関西'),(2,'中国'),(3,'四国'),(4,'北陸'); insert into kenA values(1,'青森'),(1,'岩手'),(2,'埼玉'),(2,'千葉'),(3,'愛知'),(3,'福井'),(4,'鹿児島'); insert into kenB values(1,'大阪'),(2,'鳥取'),(3,'徳島'),(4,'福井'),(4,'石川'); //実行 select if(count(*)>0,1,-1) as kekka from (select kenA.name from kenA inner join tiikiA on tiikiA.id=kenA.id and tiikiA.name='中部') as subA inner join (select kenB.name from kenB inner join tiikiB on tiikiB.id=kenB.id and tiikiB.name='北陸') as subB on subA.name=subB.name;

perifla
質問者

お礼

ありがとうございます. SQLでこんな処理も可能だったんですね. このくらいの処理がさらっと書けることを目指して頑張ります. 処理時間がCと併用するときに比べて約1/10になりました.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 複数値から一致するものがあるかどうかを調べる方法

    お世話になります。 SELECT文で複数の値の中から一致するものを検索する場合に、 以下の内容を満たすかどうかを結果として返したいです。 (1) A、B、C の値のうち、C があるかどうか (2) A、B、C の値のうち、いずれかを含んでいるかどうか 上記(1)、(2)のいずれの結果も取得したいのですが、 1つのSQLで結果を取得することは可能でしょうか? とりあえず、 SELECT 項目名 FROM TEST WHERE 項目名 IN (A, B, C) で取得件数が0件かどうか(※上記(2))を判断し、 結果をプログラム側(VB側)に保持させる。 取得件数が1件以上である場合、 取得結果を1件ずつループして Cを含むかどうか調べて、 もしCがあればその結果をプログラム側で保持しておく。 という方法しかわかりません。 SQLでこれを実現することは可能でしょうか? よろしくお願いいたします。

  • SQL文で複数の項目のうちひとつの項目のみの重複を排除する方法を教えてください。

    以下のデータ1(5件)に対してSQL文でSELECTを実行して結果(2件)が返ってくるようなSQL文はありませんでしょうか? 条件は県名の重複を排除して年月日の最新のもののみを持ってくるというものです。 【データ1】 (県名 年月日     金額) 埼玉  20090401 100 埼玉  20090402 100 埼玉  20090403 100 東京  20090501 100 東京  20090502 100 【結果】 (県名 年月日     金額) 埼玉 20090403 100 東京 20090502 100 DISTINCTや副問い合わせを考えたのですがうまいやり方が見つかりませんでした。 また、VBなどは使用せずSQL文のみを使用したいです。 お手数ですがよろしくお願いします。

  • SQL文を教えて下さい

    2つのテーブルを比較して、片方のテーブルにしかない データを検索したいのですが、どのようなSQL文に なるのか 教えて下さい。 下記の例だと、AテーブルとBテーブルの両方にあるデータ以外のデータを検索したいので、下記の結果になります。よろしくお願いします 期待される結果 003 さああ 004 いいい 005 ううう 例 Aテーブル 001 あいう 002 えおお  003 さああ 004 いいい 005 ううう Bテーブル 001 あいう 002 えおお 

  • データベースについて(mysql)

    プログラミング経験がほとんどないのですが、最近mysqlに携わり、検索時のSQL文の記述方法で分からないことがあるので誰か教えてください。 【説明】 地域テーブル、県テーブル、町テーブル、住所テーブル、存在管理テーブルの合計5つのテーブルが存在します。 地域テーブルには地域名と地域コードのカラムがあります。 県テーブルには県名と県コードのカラムがあります。 町テーブルには町テーブルと町コードのカラムがあります。 住所テーブルには地域コード、県コード、町コードと建物の名前のカラムがあります。 存在管理テーブルには、削除フラグというカラムがあります。 ここで削除フラグは、存在しない住所になると削除フラグに1を設定し、検索時には削除フラグに1が立っているものは検索できないようにするためのものです。普段は削除フラグは0になるように設定しています。 地域と県名と町名はプルダウンで選択できるようになっています。 【質問内容】 地域のプルダウンにある「関西」を選択すると選択された地域に該当する県名や町名、建物名が検索される。 また県名、町名についても同様に検索される。 地域、県名に「関西」「大阪」選択すると「関西」「大阪」に該当する町名、建物名が検索される。 さらに建物の名前の前方一致検索もできる。 ちなみにこれを1文で書きたいです。 以上のSQL文はどのようになるでしょうか。 mysqlのバージョンは4.0です。 どなたかお教えください。

    • ベストアンサー
    • MySQL
  • 二つの表の項目を比較して値を取得するSQL

    お世話になります、 二つの表の項目を比較して値を取得するSQLを作成しているのですが、うまくいきません。 具体的には Aテーブル NAME | PRICE ------|------ リンゴ | 100 ------|------ オレンジ | 200 ------|------ ブドウ | 300 ------|------ Bテーブル NAME | PRICE ------|------ リンゴ | 1000 ------|------ オレンジ | 200 ------|------ ブドウ | 1300 ------|------ という二つのテーブルA、Bがあったとします。 このA,Bの二つのテーブルのそれぞれの果物のPRAICEを比較してBのPRICEがアップしている果物を出力するという SQLを教えてください。 <ほしい結果> NAME | PRICE ------|------ リンゴ | 1000 ------|------ ブドウ | 1300 よろしくお願いします。

  • SQL 部分一致検索について

    カラムAとカラムBはそれぞれ文字列が格納されているとします。このとき、カラムAには「ABC」カラムBには「ABC(株)」があるとした場合、カラムAとカラムBが部分一致しているかをSQLで検索する場合、どのようなSQL文になるかご存知でしょうか? 勿論予め、検索したい文字列が判っている場合は、like '% nnnnn %' ですが、文字列が判らずカラム同士で部分一致するカラムを選択したいのです。

  • sql文の書き方

    いつもこちらで勉強させていただきます。 環境:mysql5.0 PHP5.1.4 apache 2.0.58 いま画面からパラメータ5受け取りました。 これをもってsql文を書こうとするが必須入力項目ではないため一つずつ判断して書いたら30種類の可能性がでてきてすごく長くなってしまいましたがなんか短縮させるいい方法はありませんか?またこれをファンクションで作り直そうとしたらちょっとうまくいかないのでどなたか教えてもらえませんか?ファンクションで渡すパラメータ($sql?$query?あるいは各パラメータですか? )は何にすればいいか?取得したい検索結果は配列です。ファンクション戻り値を連想配列にすることは可能ですか?ちょっと困っています。 $sql = "SELECT * FROM file_tbl WHERE"; // A だけの場合 if ( $b == "" and $c == "" and $d=="" and $e==""){ $sql = $sql." a='%s' order by b DESC,a"; $query = sprintf("$sql", mysql_real_escape_string($a)); // B だけの場合 }else if( $a == "" and $c == "" and $d=="" and $e==""){ $sql = $sql." b >='%s' order by b DESC,a"; $query = sprintf("$sql", mysql_real_escape_string($b)); // Cだけの場合 }else if( $a == "" and $b == "" and $d=="" and $e==""){ $sql = $sql." c <='%s' order by b DESC,a"; . . . // SQL クエリを実行する $result = mysql_query($query); よろしくご教授願います。

    • ベストアンサー
    • MySQL
  • SQLで「結果同士」の比較をするには?

    SQLで「結果同士」の比較をするにはどのように記述したらいいのでしょうか? Ora10gです。 例えば、構成としてAテーブルは KY項目1_____KY項目2_____Int型データ とします Bテーブルも KY項目1_____KY項目2・・・ といったデータ構成だとします。 Bテーブルのデータを group by KY項目1, KY項目2でカウントした時の件数とAテーブルのInt型データの数が一致しているか比較したいのですが、どのようなSQLでできますでしょうか?

  • postgreSQL SQL

    postgreSQL7.3で以下のようなデータの並び替えを実現したいと思っています。 下記のようなデータを・・・ no | recno | name ----+-------+------ 1 | 1 | a 1 | 1 | b 1 | 2 | c 1 | 4 | a 2 | 3 | a 2 | 3 | c 2 | 3 | b 3 | 5 | b 4 | 6 | a 下記のような並びにSQLで取得することは可能でしょうか。 no | recno | name1 | name2 | name3 ----+-------+------+------+------ 1 | 1 | a | b | 1 | 2 | c | | 1 | 4 | a | | 2 | 3 | a | b | c 3 | 5 | b | | 4 | 6 | a | | noとrecnoのグループごとにnameを横に並べていきたいのですが、 可能なのでしょうか。 できれば、nameは個々のカラムに出力したいのですが、 配列のように1つのカラム内にカンマ区切りでの出力でも構いません。 上記のような表示が可能であれば、SQL文もご教授いただけますと幸いです。 宜しくお願いいたします。

  • 一致したデータ同士を文字列で繋げるには?

    何か方法があれば教えて頂きたのです。 SQLで一致したデータの項目同同士を繋げることができるかどうか。 具体的には以下のような。 ID   名前 ------------ A1 SQL A1 My A2 Server のような結果が出るようなSQL文を作ったとして ID   名前 ------------ A1 SQL,My A2 Server みたいな同じIDの名前を例のようなカンマとかスラッシュ 等を間に入れてつなげていくなんてことできますか? 実際にはSQL文で出たデータを各配列にそれぞれデータに入れて使う のでSQL文の中で仮に出来なくても結果に対してそのようにつなげることが可能かどうか。

    • ベストアンサー
    • MySQL
このQ&Aのポイント
  • Windows10 64bitでAW-808AWを使用していますが、動作が遅くて困っています。
  • AW-808AWを使用している際に、何をするにも動作が遅い状況が続いています。
  • EPSON製品であるAW-808AWをWindows10 64bitで利用している際に、パフォーマンスの問題が発生しています。
回答を見る