問題を簡単化して説明します。下記の二つテーブルがあります。
Tablle1のフィールド (*)はキーフィールド
T1F1(*) T1F2 T1F3
Table2のフィールド
T2F1(*) T2F2
次のようなselect文を発行します。
select ..... from Table1 , Table2
where T1F1=”...” and T1F3=T2F1
通常は、これでうまくいきます。
しかしT1F3がnullの場合があり、そのときはselectされません。
この場合に、Table2のフィールドをnullで戻してselectを成立させたい。
table1だけでselectを行い、その結果に応じてtable2を見れば、できることは
分かりますが、ひとつのSQLで行いたいのです。
outer joinでは不可でした。
#もともとselect結果が0件なので当たり前か..。
何か良い方法がありましたらお願いします。
不可ならば、そうと教えてください。
外部結合になります。次のSQLはどうですか。
select * from Tablle1 left join Table2 on Tablle1.T1F3 = Table2.T2F1
where Tablle1.T1F1 = ’...’
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_kj04_1.htm
SQL 表結合(join) - 単純結合、等価結合、非等価結合、外部結合、再帰結合 - SAK Streets
真ん中あたりにある
■外部結合(外結合、行結合、行連結、テーブル結合、外部接合)
を参照にしてください。
http://allabout.co.jp/career/database/closeup/CU20020607/?FM=cuk...
指定されたファイルが見つかりませんでした - All About
他にも1
他にも2
ありがとうございます。
これから見てみます。
http://www.hatena.ne.jp/1107959024#
人力検索はてな - SQLで困っています。教えてください。 問題を簡単化して説明します。下記の二つテーブルがあります。 Tablle1のフィールド (*)はキーフィールド T1F1(*) T1F2 T1F3 Table2..
URLはダミーです。
以下のようなSQLでいかがでしょうか?
select
t1f1
, t1f2
, t1f3
, t2f1
, t2f2
from
table2
, table1
where
t1f1 = ’...’
and(t1f3 is not null
and t1f3 = t2f1)
union all
select
t1f1
, t1f2
, t1f3
, ’’ as t2f1
, ’’ as t2f2
from
table1
where
t1f1 = ”...”
andt1f3 is null
;
ありがとうございます。
http://www.db2.jp/siryo/db2online/db2s0/frame3.htm#db2s0278
IBM DB2 Developer Domain - Japan
DBMSの種類やバージョンにより実装されていない場合もありますが、FULL OUTER JOINではだめでしょうか。
SELECT ... FROM Table1 FULL OUTER JOIN Table2 ON Table1.F3 = Table2.F1 WHERE Table1.F1=”...”;
確認した限りだと、
・Oracleでは8i以前は×(9以降は○)
・MySQLは×(5.1以降で実装予定)
・PostgreSQLの7.1以降は○(それ以前は未調査)
でした。
ありがとうございます。
ありがとうございました。
これはやりました。