on是在生成臨時(shí)表的時(shí)候使用的條件,不管on的條件是否起到作用,都會(huì)返回左表的行,
where則是在生成臨時(shí)表之后使用的條件,此時(shí)已經(jīng)不管是否使用了left join了,只要條件不為真的行,全部過濾掉。
--所以要寫在on條件之后
錯(cuò)誤寫法:
Db::name('User')->alias('a')->join('__KQ_HISTORY__ b','a.user_id = b.user_id','left')->join('__KQ_STATUS__ c','b.kq_status_id = c.id','left')->where(['a.user_state'=>0,'a.department_id'=>(string)input('bm_id/d'),'b.kqrq'=>date('Y-m-d')])->order('a.user_sort asc')->limit(150)->field('a.user_name,c.name')->select();正確寫法:
Db::name('User')->alias('a')->join('__KQ_HISTORY__ b','a.user_id = b.user_id and b.kqrq = "'.date('Y-m-d').'"','left')->join('__KQ_STATUS__ c','b.kq_status_id = c.id','left')->where(['a.user_state'=>0,'a.department_id'=>(string)input('bm_id/d')])->order('a.user_sort asc')->limit(150)->field('a.user_name,c.name')->select();有問題歡迎點(diǎn)擊右側(cè)聯(lián)系我qq交流