タイトルが質問を正当化するかどうかわかりません。 2テーブルtable A a
とtable B b
があります。私は内側の両方のテーブルは、などの一般的なMSISDN
を持って、私はtimestamp, frmsisdn, tomsisdn, reference, amounts etc
sql:2つのテーブルを結合し、最初のテーブルにあって2番目のテーブルにない場合でもレコードを表示します
のように、ユーザーのトランザクションレポートを持っているtable B
にnames, msisdn, regdate, status, address etc
ように私は、ユーザーのすべての詳細を持っているtable A
に
on (a.msisdn = b.frmsisdn or a.msisdn = b.tomsisdn)
でこれら2つのテーブルを結合していますTable A
の場合はMSISDN
となり、Table B
の場合はFRMSISDN
またはTOMSISDN
のいずれかであるか、いずれのフィールドにも表示されません取引のないsers)。
Table B
の項目がないTable A
のユーザーが表示されていますが、基本的にデータベースに登録されていますが、すべての取引は行われていません。あなたはすべての必要な場合、私は
select mai.msisdn, mai.firstname, mai.lastname, type as account_type,
alias as nickname, mai.regdate, mai.status,
amount as balance, count(trai.referenceid) as number_of_transactions,
sum(trai.amount) as sum_of_transactions from tableA mai
inner join tableC stk
on mai.msisdn = stk.msisdn
inner join tableB trai
on (mai.msisdn = trai.tomsisdn or mai.msisdn = trai.frmsisdn)
where trai.status = 0
and stk.walletid = 0
group by mai.msisdn, mai.firstname, mai.lastname, mai.type,
mai.alias, mai.regdate, mai.status,
stk.amount;
ヒント:LEFT JOIN – Serg
あなたにはsqlコードが表示されます。 – scaisEdge
左結合または右結合を使用してください - あなたが知っている...あなたが私たちに見せなかった部分はありますか? **それは変更する必要があります** – Hogan