四个表连接问题:
主表:t_jcd
从表:t_dgwx,t_dgcl,t_dgqtfy 主表肯定要有数据,从表,有可能某一个有,或某二个有,或全部有 要求:一个主表,三个从表,我想将四个表中所有东西都显示 ,请教? 数据如下: t_tcd 表:字段:p_dh,p_cp,p_cxid 20091201,粤E123,丰田 t_dgwx表,字段:p_dh,p_wxxmid 20091201,补胎
20091201,打腊
20091201,换机油
t_dgcl表,字段:p_dh,p_c1 20091201,原厂机油
20091201,机油格
要求显示
t_jcd.p_dh , t_jcd.p_cp , t_jcd.p_cxid , t_dgwx.p_wxxmid, t_dgcl.p_c1 20091201,粤E123,丰田,补胎,原厂机油
20091201,粤E123,丰田,打腊,机油格
20091201,粤E123,丰田,换机油
这样的语句
SELECT t_jcd.p_dh ,
t_jcd.p_cp ,
t_jcd.p_cxid ,
t_dgwx.p_wxxmid,
t_dgcl.p_c1
FROM t_jcd join t_dgwx on t_jcd.p_dh = t_dgwx.p_dh
left join t_dgcl on t_jcd.p_dh = t_dgcl.p_dh
go
现在我是用左连接就会很多重复的,就显示,6行了,变成很多重复的,请指教
主表:t_jcd
从表:t_dgwx,t_dgcl,t_dgqtfy 主表肯定要有数据,从表,有可能某一个有,或某二个有,或全部有 要求:一个主表,三个从表,我想将四个表中所有东西都显示 ,请教? 数据如下: t_tcd 表:字段:p_dh,p_cp,p_cxid 20091201,粤E123,丰田 t_dgwx表,字段:p_dh,p_wxxmid 20091201,补胎
20091201,打腊
20091201,换机油
t_dgcl表,字段:p_dh,p_c1 20091201,原厂机油
20091201,机油格
要求显示
t_jcd.p_dh , t_jcd.p_cp , t_jcd.p_cxid , t_dgwx.p_wxxmid, t_dgcl.p_c1 20091201,粤E123,丰田,补胎,原厂机油
20091201,粤E123,丰田,打腊,机油格
20091201,粤E123,丰田,换机油
这样的语句
SELECT t_jcd.p_dh ,
t_jcd.p_cp ,
t_jcd.p_cxid ,
t_dgwx.p_wxxmid,
t_dgcl.p_c1
FROM t_jcd join t_dgwx on t_jcd.p_dh = t_dgwx.p_dh
left join t_dgcl on t_jcd.p_dh = t_dgcl.p_dh
go
现在我是用左连接就会很多重复的,就显示,6行了,变成很多重复的,请指教
t_dgcl表,字段:p_dh,p_c120091201,原厂机油
20091201,机油格这个表和
t_dgwx表,字段:p_dh,p_wxxmid20091201,补胎
20091201,打腊
20091201,换机油匹配不唯一
必须加个连接两个表逻辑的字段
好像你昨天有问,添加IDENTITY 列,用临时表来,你时间作连接条件肯定有重复
if object_id('t_dgwx') is not null drop table t_dgwx
if object_id('t_dgcl') is not null drop table t_dgcl
create table t_tcd
(
p_dh varchar(10),
p_cp varchar(10),
p_cxid varchar(10)
)
create table t_dgwx
(
p_dh varchar(10),
p_wxxmid varchar(10)
)
create table t_dgcl
(
p_dh varchar(10),
p_c1 varchar(10)
)
GO
insert into t_tcdselect '20091201','粤E123','丰田'GO
insert into t_dgwx
select '20091201','补胎' union all
select '20091201','打腊' union all
select '20091201','换机油'
GO
insert into t_dgclselect '20091201','原厂机油' union all
select '20091201','机油格'
Go
select *,identity(int,1,1) as pos into #t_dgwx from t_dgwxselect *,identity(int,1,1) as pos into #t_dgcl from t_dgclselect *from t_tcd a
full join #t_dgwx b on a.p_dh=b.p_dh
Left join #t_dgcl c on b.p_dh= c.p_dh and b.pos=c.posdrop table #t_dgwx,#t_dgcl/*test*/
p_dh p_cp p_cxid p_dh p_wxxmid pos p_dh p_c1 pos
---------- ---------- ---------- ---------- ---------- ----------- ---------- ---------- -----------
20091201 粤E123 丰田 20091201 补胎 1 20091201 原厂机油 1
20091201 粤E123 丰田 20091201 打腊 2 20091201 机油格 2
20091201 粤E123 丰田 20091201 换机油 3 NULL NULL NULL(3 row(s) affected)