
No.1ベストアンサー
- 回答日時:
SQL だけで全てこなすことが正しいとは限らないのですが・・・・・・。
速度など全く気にしないのであれば
select top 1 id, name from (
select id, name, 50 as tID from TA where id=XXXX
union
select id, name, 100 as tID from TB where id=XXXX
) tmpTbl
order by tID
こんな感じで行けるかとは思います。要は両方から検索して結合、その際に Table A には tID=50、Table B には tID=100 を当てておき、tID でソートして先頭1行を取得する、というものです。一応ですが、SQL Server/ MS Access 限定の SQL です。
実際のところ、同一 ID のデータは絶対に A か B のどちらかにしか無いということであれば、2つの検索結果を結合しても1行以下しか返ってこないことになるので、from 句の中のサブクエリだけでいいことになります。
この回答へのお礼
お礼日時:2011/09/16 20:36
早速の回答ありがとうございます。「どうしてもSQL」という訳ではないのですが、
後々の保守性や諸事情ございまして、SQLで書きたかったのです。
で、「tID=50」や「tID=100」の50とか100という値ですけど、この値の理由は
何でしょうか?各テーブルのデータ数が50個以下ならば、この値でOK、ということ
でしょうか?
No.4
- 回答日時:
ANo3です。
書き忘れ。
ただし、TableAに「名前」がNullの「ID」があり、このIDをキーとした場合は
TableBの「名前」ではなく、TableAの「名前」すなわち、
Nullを出力したいという仕様でないことが条件です。
No.3
- 回答日時:
SELECT ISNULL((SELECT name FROM TableA WHERE id = 3),
(SELECT name FROM TableB WHERE id = 3))
ででます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
VIEWの元のテーブルのindexって...
-
エクセルの関数について教えて...
-
SQLサーバから、項目の属性(型...
-
エラー 1068 (42000): 複数の主...
-
小人の読み方は?
-
Unionした最後にGROUP BYを追加...
-
sqlで、600行あるテーブルを100...
-
Access パラメータクエリをcsv...
-
SQLにて特定の文字を除いた検索...
-
WordpressのContact form 7でzi...
-
PL/SQLの変数について
-
上位3位を求めるSQL文は?
-
select文のwhere句に配列を入れ...
-
1テーブル&複数レコードの更新...
-
selectした大量データをinsert...
-
DataTableで重複行を削除したい
-
全角文字を含む行を検索
-
SQL Left Join で重複を排除す...
-
カラム名でseqとidではどちらが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
SQL Left Join で重複を排除す...
-
Access パラメータクエリをcsv...
-
マイクラPC版のコマンドで効率...
-
【Transact-sql】 execの結果を...
-
sqlで、600行あるテーブルを100...
-
SQLにて特定の文字を除いた検索...
-
1テーブル&複数レコードの更新...
-
PL/SQLの変数について
-
WordpressのContact form 7でzi...
-
複数テーブルのGROUP BY の使い...
-
バインド変数について
-
inner joinをすると数がおかし...
-
MySQLのint型で001と表示する方...
-
updateを1行ずつ実行したい。
おすすめ情報