SQLで困っています。教えてください。


問題を簡単化して説明します。下記の二つテーブルがあります。

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件なので当たり前か..。

何か良い方法がありましたらお願いします。
不可ならば、そうと教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:Dandan No.1

回答回数36ベストアンサー獲得回数0

ポイント10pt

外部結合になります。次のSQLはどうですか。

select * from Tablle1 left join Table2 on Tablle1.T1F3 = Table2.T2F1

where Tablle1.T1F1 = ’...’

id:gzmgzm

ありがとうございました。

これはやりました。

2005/02/10 06:00:35
id:oh_tsu No.2

回答回数48ベストアンサー獲得回数0

ポイント20pt

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

id:gzmgzm

ありがとうございます。

これから見てみます。

2005/02/10 06:03:28
id:zetaplus No.3

回答回数52ベストアンサー獲得回数1

ポイント20pt

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

;

id:gzmgzm

ありがとうございます。

2005/02/10 06:05:25
id:esseesse No.4

回答回数192ベストアンサー獲得回数0

ポイント20pt

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以降は○(それ以前は未調査)

でした。

id:gzmgzm

ありがとうございます。

2005/02/10 11:14:08

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

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

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

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

回答リクエストを送信したユーザーはいません