四个表连接问题: 
主表: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行了,变成很多重复的,请指教

解决方案 »

  1.   

    你这个肯定不是left join你如果想那样显示 就不应该有那么多从表
      

  2.   


    t_dgcl表,字段:p_dh,p_c120091201,原厂机油
    20091201,机油格这个表和
    t_dgwx表,字段:p_dh,p_wxxmid20091201,补胎
    20091201,打腊
    20091201,换机油匹配不唯一
    必须加个连接两个表逻辑的字段 
      

  3.   


    好像你昨天有问,添加IDENTITY 列,用临时表来,你时间作连接条件肯定有重复
      

  4.   

    2005直接用row_number()over()构造个列来连接
      

  5.   

    if object_id('t_tcd') is not null drop table t_tcd
    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)
      

  6.   

    行有重复的话,就在 select 后加个 distinct 喽!