• ベストアンサー

複数(2つ)のテーブルで検索を行いたい

MySQL 3.23です。 select count(*) as hit from freedata where (A=10 or B=10); という構文と select count(*) as hit from sharedata where A=10; という構文を一行にしたOR検索を行いたいのですが、方法はありますか? 要は、同一のキーワードで、二つのテーブルを検索対象にしたいのです。ご教授よろしくお願い致します。

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

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

つまり、freedataとsharedataは同じ構造のテーブルということですね? 3.23系はUNIONが動かないようなので、 テンポラリに流し込んで表示することになりますね。 freedataテーブル A  B  C 1  1  1 2  2  2 5  10  3 sharedataテーブル A  B  C 3  3  3 4  4  4 10 12  7 結果 A  B  C 5  10  3 10 12  7 CREATE TEMPORARY TABLE `temp_amount`(`A` INT,`B` INT,`C` INT); INSERT INTO `temp_amount` SELECT `A`,`B`,`C` FROM `freedata` WHERE 10 IN (`A`,`B`,`C`); INSERT INTO `temp_amount` SELECT `A`,`B`,`C` FROM `sharedata` WHERE 10 IN (`A`,`B`,`C`); SELECT `A`,`B`,`C` FROM `temp_amount`;

tomatocot
質問者

お礼

確かに3.23系だとunionが動かないのでちょっと回り道になってしまいましたね(汗)。 どうもご回答ありがとうございました。

その他の回答 (1)

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

どのようなデータからどのような結果を希望しているかによりますね。 freedataとsharedataの関連がわからない限り、 結果表示がぼろぼろになりますよー

tomatocot
質問者

補足

■freedataテーブル A列の値 5 B列の値 10 C列の値 3 ■sharedataテーブル A列の値 10 B列の値 12 C列の値 7 こういうデータがあって、 キーワード「10」を検索した時、数値10を示しているのが何件あるかを表示させたい、という感じです。上の例では2件です。