私はいくつかの同様の質問を見てきましたが、以下の問題の正しい解決策に出くわしたり、見つけたりすることはまだできていません。
次の3つのテーブルがあるとします。
account
profile_id number (nullable)
bill_acct varchar
status varchar (nullable)
remarks varchar (nullable)
stage
ecpd_profile_id number (nullable)
bill_account varchar (nullable)
account_class varchar (nullable)
profile
ecpd_profile_id number
reg_prof_id number
以下を選択するには、結合を作成する必要があります。
account.bill_act, account.status, account.remarks, stage.account_class
どこ
profile.ecpd_profile_id = (given number)
account.profile_id
とprofile.reg_prof_id
同等です
stage.ecpd_profile_id
とprofile.ecpd_profile_id
同等です
stage.bill_acct
とaccount.bill_acct
同等です
私は次のことを試しました...
select
account.bill_acct,
account.status,
account.remarks,
stage.account_class
from
registration_account account
join registration_profile profile
on account.profile_id = profile.reg_prof_id
join acct_stg stage
on stage.ecpd_profile_id = profile.ecpd_profile_id
and stage.bill_acct = account.bill_acct
where
profile.ecpd_profile_id = ?
これは機能しますが、ステージで一致するものがないすべてのアカウントエントリを除外します。
account.bill_acct=stage.bill_acct
のすべての行を用意し、それが存在する場所に追加の列を追加する必要がありstage.account_class
ます。それ以外の場合はnullです。
複数の結合は常に私を投げます。
考え?