複数個のテーブルを同時に検索したいです。


例えば、tableAとtableBが合ったとします。
これらには、共通のカラム名のものは無いのですが
WHERE keyword='テスト'のように検索をしたいのです。

要は下記のような事をしたいのです。

tableAにnameというカラムがある
tableBにname2というカラムがある
この2つのテーブルと異なるカラム名を同時に検索し、結果はresultという名前にして、取得する。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/06/11 11:58:03
  • 終了:2014/06/18 12:00:06

回答(3件)

id:watercooler No.1

井戸端さん回答回数289ベストアンサー獲得回数512014/06/11 12:38:18

ポイント67pt

UNIONで結合するのが楽よ。

SELECT name AS result FROM tableA WHERE keyword = 'テスト'
UNION ALL
SELECT name2 FROM tableB WHERE keyword = 'テスト'

ほとんどのデータベースでASは省略できるんだけどリネームしてるってわかりやすいようにASを入れておいたわ。

id:makocan

ありがとうございます!

2014/06/11 12:42:18
id:snow0214 No.2

snow0214回答回数470ベストアンサー獲得回数1162014/06/11 20:35:34

ポイント67pt

WHERE keyword='テスト' というのは、カラム name および name2 を検索する意味だと思うので、SQL文は下のようになります。

SELECT name AS result FROM tableA WHERE name = 'テスト'
UNION ALL SELECT name2 AS result FROM tableB WHERE name2 = 'テスト';
id:sasada No.3

sasada回答回数1482ベストアンサー獲得回数1332014/06/12 08:45:16

ポイント66pt

結果列をresult、検索条件をkeyword = 'テスト'とすると仮定して、

SELECT a.name AS result FROM tableA AS a WHERE a.keyword = 'テスト'
UNION ALL
SELECT b.name2 AS result FROM tableB AS b WHERE b.keyword = 'テスト'

でできると思います。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません