加入语句不显示记录
我想完成以下操作:连接3个表时显示Mgt.Dbo.Tab1(157行)的所有行。该查询仅提供管理76行的结果。我试过用左连接无济于事。帮帮我! TIA加入语句不显示记录
代码:
select
mgt.UID
, Mgt.emp_num
, emp.EMP_NAME
, RTRIM(mgt.COMPANY)
, 'Company 1'
, jnl.d_w
, mgt.d_r
, jnl.UNITS
, jnl.RATE
, mgt.hours
, mgt.RATE
, rtrim(jnl.MEMO)
, mgt.UNIQUE_ID
, jnl.grow
, jnl.grow_num
, hdr.ch_date
, mgt.sub_by
, hdr.ch_num
from Mgt.dbo.sick as mgt
inner join Comp1.DBO.emp as emp
on Mgt.emp_num = emp.emp_num
inner join Comp1.dbo.hdr as hdr
on Mgt.emp_num = hdr.emp_num
inner join Comp1.dbo.jnl as jnl
on jnl.c_n = hdr.c_n
where COMPANY in ('Test')
and jnl.wg = 'SP'
and mgt.d_r = jnl.d_w
and mgt.d_r >= '8/20/2017'
and mgt.d_r <= '9/1/2017'
and mgt.d_r=jnl.d_w
你的编辑后,交换你inner join
S表示left join
S和左连接表移动任何where
条款的加盟条件:
select
mgt.UID
, mgt.emp_num
, emp.EMP_NAME
, RTRIM(mgt.COMPANY)
, 'Company 1'
, jnl.d_w
, mgt.d_r
, jnl.UNITS
, jnl.RATE
, mgt.hours
, mgt.RATE
, rtrim(jnl.MEMO)
, mgt.UNIQUE_ID
, jnl.grow
, jnl.grow_num
, hdr.ch_date
, mgt.sub_by
, hdr.ch_num
from Mgt.dbo.sick as mgt
left join Comp1.DBO.emp as emp
on Mgt.emp_num = emp.emp_num
left join Comp1.dbo.hdr as hdr
on Mgt.emp_num = hdr.emp_num
left join Comp1.dbo.jnl as jnl
on jnl.c_n = hdr.c_n
and jnl.wg = 'SP'
and jnl.d_w = mgt.d_r
where mgt.COMPANY in ('Test')
and mgt.d_r >= '8/20/2017'
and mgt.d_r <= '9/1/2017'
作为开关的结果,我现在显示14108条记录。不应该通过添加左连接,可以显示的最大数量的记录将是mgt中的最大行数? – BIGTONE559
@ BIGTONE559我想说你缺少一些连接标准,因为'mgt'中的每一行都与连接中的多行相匹配。也许'jnl'有另一个列加入,像'emp_num'? – SqlZim
问题肯定与我的加入声明有关。做更多的功课,我会让你知道我找到了什么。 – BIGTONE559
出现以下诀窍:
select
mgt.UID
, mgt.emp_num
, emp.EMP_NAME
, RTRIM(mgt.COMPANY)
, 'Company 1'
, jnl.d_w
, mgt.d_r
, jnl.UNITS
, jnl.RATE
, mgt.hours
, mgt.RATE
, rtrim(jnl.MEMO)
, mgt.UNIQUE_ID
, jnl.grow
, jnl.grow_num
, hdr.ch_date
, mgt.sub_by
, hdr.ch_num
from Mgt.dbo.sick as mgt
left join Comp1.DBO.jnl as jnl
inner join comp1.dbo.hdr as hdr
on jnl.c_n= hdr.c_n
on jnl.d_w=mgt.d_r
and mgt.unique_id=jnl.memo
and hdr.emp_num=mgt.emp_num
where mgt.COMPANY in ('Test')
and mgt.d_r >= '8/20/2017'
and mgt.d_r <= '9/1/2017'
我错过了一个内连接。
我想要购买一些别名。 – SqlZim
@SqlZim ;-)名称已更改为保护无辜 – BIGTONE559
否,不像Dragnet。与表格别名和源列表一样,也是一样。 [如何为您的餐桌添加名字 - Aaron Bertrand](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-table-aliases-like-ab- oror -T1-T2-t3.aspx)。每一列都应该以它所来源表的表别名为前缀,这样我们就可以告诉你如何使用左连接来修复查询,并将条件从你的'where'移动到你的连接条件。 – SqlZim