人私は2つの異なるテーブルを持っています。左外部結合とon節を使用して共通の列を持つ2つの異なるテーブルからデータを取得する
表1:
contract-id | contract-date
1 | 01-05-2016
1 | 01-06-2016
1 | 01-07-2016
2 | 01-01-2016
2 | 01-02-2016
3 | 01-05-2016
3 | 01-06-2016
表2:
invoice-number|contract-id|invoice-from-date|invoice-to-date
1 |1 |01-05-2016 |31-05-2016
2 |1 |15-05-2016 |31-05-2016
3 |1 |25-05-2016 |31-05-2016
私の要件は、私はテーブル-1から現在の月に来るすべての契約が何であるかを示さなければならない、で、私はテーブル-2からそれらの契約のために調達された請求書の数を表示しなければなりません。発生した請求書があれば、その数を表示するか、単にゼロを表示する必要があります。予想される答えは:
contract-id|counts
1 |3
3 |0
契約-idの数:3があるため、私の避難所「、0である:私は現在の月のための3つの請求書を調達し、契約-idの回数たので1は、3ですそれについて請求書を提出した。 contract-id:2は欠けています。なぜなら、現在の月には来ないからです。
これは私が試したものです:
select cbm_contract_period_value_split.contract_id,
count(cbm_contract_invoice_request.contract_id),
cbm_contract_period_value_split.contract_date
from cbm_contract_period_value_split
left outer join cbm_contract_invoice_request
on cbm_contract_period_value_split.contract_id = cbm_contract_invoice_request.contract_id
and MONTH(cbm_contract_period_value_split.contract_date) = MONTH(CURDATE())
and MONTH(cbm_contract_invoice_request.invoice_for_the_period_of_from_date) = MONTH(CURDATE())
私はすでにこの質問を掲載しましたが、今私は私が得た答えと編集されたバージョンでこれを掲示しています。しかし、私は希望の答えを得ていません。何が間違っていて、私は何をすべきですか?
#3がまだ存在する場合、契約ID#2が希望の結果で消えたのはなぜですか? –
これは単なる例であり、当月には存在しないため、考慮する必要はありません。 – SSS