有3张 表 basicinfor ,guoshui ,dishui 
现在要根据 ename 和 trtime 查询 guoshui 里面所有的字段,dishui 里面所有的字段,basicinfor 里面的units1,units2,units3三个字段。
3个表 中都有ename 这个字段。 guoshui ,dishui 中的ename 肯定来源basicinfor这个表,
guoshui 和dishui  有trtime 字段。现在有个问题 如果emane 这个条件 在guoshui里面没有 ,而在dishui  里面有的话,我想出来的记录是:
guoshui里面就显示空的,dishui 显示出满足条件的数据,而且不会出现重复的记录。我写的sql 结果却是 没有记录。
select b.units1,b.units2,b.units3,g.*,d.* from basicinfor b, guoshui g,dishui d where .....在线等,查询结果对了就结贴

解决方案 »

  1.   

    dishui表 
    dsid int;
    codeid varchar;
    ename varchar;
    cjr float;
    trtime varchar;
    guoshui表
    gsid int;
    codeid varchar;
    ename varchar;
    zzspt float;
    transtime varchar;basicinfor表
    eid int;
    ename varchar;
    eaddress varchar;
    units1 varchar;
    units2 varchar;
    units3 varchar;
    一些字段省略了,关键的这些字段就够了,测试数据根据字段类型 随便填写无所谓的
      

  2.   

    insert into dishui varlues(1,'320012','机械厂',3400.99,'2009-02')
    insert into dishui varlues(2,'320013','得力纺织厂',5400.00,'2009-02')
    insert into dishui varlues(3,'320014','实木有限公司',7800.00,'2009-02')
    insert into dishui varlues(4,'320015','维维有限公司',2400.55,'2009-02')insert  into guoshui varlues(1,'520010','机械厂',23444.99,'2009-02')
    insert  into guoshui varlues(2,'520012','得力纺织厂',454.00,'2009-02')
    insert  into guoshui varlues(3,'520013','实木有限公司',895.99,'2009-02')insert into basicinfor varlues(1,'机械厂','南京','古铜县','江宁县','江浦县')
    insert into basicinfor varlues(2,'得力纺织厂','南京','古铜县','','')
    insert into basicinfor varlues(3,'实木有限公司','南京','古铜县','','')
    insert into basicinfor varlues(4,'维维有限公司','南京','古铜县','江宁县','江浦县')
    insert into basicinfor varlues(5,'壳牌燃油','南京','古铜县','','')如果 查询  条件是“维维有限公司” 那么dishui 表出来数据,而guoshui里面的字段就显示空白,同时要显示basicinfor 表里面的units1 ,units2,units3
    '古铜县','江宁县','江浦县'
      

  3.   

    select b.units1,b.units2,b.units3,g.* , d.*
    from basicinfor b
    left join guoshui g on b.ename = g.ename
    left join dishui d on b.ename = d.ename
      

  4.   

    SELECT A.*,B.*,C.* FROM dishui A
    LEFT JOIN guoshui B
     ON A.dsid = B.gsid 
    LEFT JOIN basicinfor C
     ON A.dsid = C.eid
      

  5.   

    create table guoshui(
    gsid int,
    codeid varchar(50),
    ename varchar(50),
    zzspt float, 
    transtime varchar(50)
    )create table basicinfor(
    eid int,
    ename varchar(50),
    eaddress varchar(50), 
    units1 varchar(50), 
    units2 varchar(50),
    units3 varchar(50), 
    )insert into dishui values(1,'320012','机械厂',3400.99,'2009-02') 
    insert into dishui values(2,'320013','得力纺织厂',5400.00,'2009-02') 
    insert into dishui values(3,'320014','实木有限公司',7800.00,'2009-02') 
    insert into dishui values(4,'320015','维维有限公司',2400.55,'2009-02') insert  into guoshui values(1,'520010','机械厂',23444.99,'2009-02') 
    insert  into guoshui values(2,'520012','得力纺织厂',454.00,'2009-02') 
    insert  into guoshui values(3,'520013','实木有限公司',895.99,'2009-02') insert into basicinfor values(1,'机械厂','南京','古铜县','江宁县','江浦县') 
    insert into basicinfor values(2,'得力纺织厂','南京','古铜县','','') 
    insert into basicinfor values(3,'实木有限公司','南京','古铜县','','') 
    insert into basicinfor values(4,'维维有限公司','南京','古铜县','江宁县','江浦县') 
    insert into basicinfor values(5,'壳牌燃油','南京','古铜县','','') select b.units1,b.units2,b.units3,g.*,d.*
    from basicinfor b 
    left join guoshui g on b.ename = g.ename 
    left join dishui  d on b.ename = d.ename
     where b.ename ='维维有限公司units1      units2        units3          gsid        codeid             ename          zzspt      transtime      dsid        codeid          ename        cjr          trtime古铜县   江宁县      江浦县          NULL        NULL              NULL           NULL        NULL            4           320015    维维有限公司    2400.55     2009-02(1 row(s) affected)
      

  6.   


    不好意思少了一张表
    create table dishui(
    dsid int, 
    codeid varchar(50), 
    ename varchar(50),
    cjr float,
    trtime varchar (50)
    )
      

  7.   

    如果 我 页面加 条件 ename 和transtime
    是不是这样写
    select b.units1,b.units2,b.units3,g.* , d.*
    from basicinfor b
    left join guoshui g on b.ename = g.ename
    left join dishui d on b.ename = d.ename
    where  (b.ename='维维有限公司' or g.ename='维维有限公司') 
    and (d.transtime='2009-02' or g.transtime='2009-02') 
    查询结果基本出来了,一会结贴
      

  8.   

    select b.units1,b.units2,b.units3,g.* , d.* 
    from basicinfor b 
    left join guoshui g on b.ename = g.ename 
    left join dishui d on b.ename = d.ename 
    where  b.ename='维维有限公司' and (d.transtime='2009-02' or g.transtime='2009-02')最终答案这样应该没得错吧