私はのように見えるテーブルleave_form
を持っている:この結合クエリはどのように実行しますか?
type id reporting_id leave_bal from_date_id leave_from to_date_id leave_to number leave_for status applied_dates_id pendays
personal 99 6 10 1023 full day 1313 full day 10 personal yes 1026 null
私はleave_form
にこれらの日付を参照できるように、私は、日付の別のテーブルを持っています。私leave_date
の表は、次のようになります。
date_id(AI) dates(UK)
1025 2016-02-18
1301 2016-02-20
1218 2016-02-16
このdate_id
私は私が唯一leave_form
テーブルにdate_id
を参照しています、すなわち、すべての日付がleave_date
テーブルに挿入されているleave_form
表にし、このテーブルからfrom_date_id, to_date_id, applied_dates_id
の列に挿入されています。
emp_code
とemp_name
を保持するテーブルもあります。私personal
表には、次のとおりです。
id(AI) emp_code(PK) emp_name
99 K0209 Nijo
私は任意の値を得ることはありませんleave_form
テーブルからfrom_date_id, to_date_id, applied_dates_id
列の日付を取得しようとしていた場合。日付を取得するための
私のクエリは次のとおりです。私はこのクエリを実行していたときに何もデータが返されないます
type, emp_code, rm_id, rm_name, leave_bal, from_date, leave_from, to_date, leave_to, number, leave_for, status, applied_date, pendays
すなわち:
select g.type, a.emp_code, h.rm_id, h.rm_name, g.leave_bal, i1.dates as from_date,
g.leave_from, i2.dates as to_date, g.leave_to, g.number, g.leave_for, g.status,
i3.dates as applied_date, g.pendays
from personal a
inner join leave_form g
on a.id = g.id
inner join inform_to_rm h
on h.reporting_id = g.reporting_id
inner join leave_dates i1
on i1.dates = g.from_date_id
inner join leave_dates i2
on i2.dates = g.to_date_id
inner join leave_dates i3
on i3.dates = g.applied_dates_id
where a.emp_code = 'K0209';
それはように私は結果を示しています。
"Left join leave_form g"のように左にジョイントしようとします。なぜなら、内部joinは結果が一致していれば2つのテーブルが一致した値を返すからです。それ以外の場合は何も返しません。 – cfprabhu
サイド質問:leave_formテーブルに日付を入れるのではなく、なぜこのdate_id構造を使用しますか? – Burki
私は左の結合を行っていますが、from_date、to_date、applied_dateの日付は返していません。私は、date_idとleave_datesテーブルとleave_formテーブルを比較することで、日付を返す必要があります。 –