数据库为SQL2000,实现要求如下:
A表字段 A1,A2,A3。
B表字段 B1,A1,B3。
C表字段 C1,A2,C3。现在要求,A表有A1字段和B表A1字段关联,把B表信息列出来,A表A2字段和C表A2关联,把C表信息列出来,B,C两表没有任何关联,要求一个SQL语句,把A、B、C表信息关联查询,并且信息不能重复。

解决方案 »

  1.   

    select a.*,b.b1,b.b3,c.c1,c.c3 from a join b on a.a1=b.a1 join c on a.a2=c.a2
      

  2.   


    select *
    from A 
    INNER JOIN B
    ON A.A1=B.A1
    UNION
    select *
    from A 
    INNER JOIN C
    ON A.A2=C.A2
      

  3.   

    select D.*,C.C1,C.C3 from (select A.*,B.B1,B.B3 from A inner join B on A.A1=B.A1)D inner join C on C.A2=A.A2
      

  4.   

    1楼:我在本地用select wgsjzc.*,wgsjzclx.id,model.sj from wgsjzc join wgsjzclx on wgsjzc.wpfl=wgsjzclx.id join model on wgsjzc.wllh=model.sj执行,查询没有结果,其实wgsjzc.wllh=model.sj的确没有任何值对应,但是wgsjzc.wpfl=wgsjzclx.id对应的有6条,按道理,应该显示6条。
      

  5.   

    这里补充说一下,在A表数据里有约束,如果A表和B表关联,就一定不会和C表关联,如果和C表关联,就一定不会和B表关联,这个约束对查询应该可以简化一些。
      

  6.   

    2楼:用select wgsjzc.* from wgsjzc inner join wgsjzclx on wgsjzc.wpfl=wgsjzc.id union select wgsjzc.* from wgsjzc inner join model on wgsjzc.wllh=model.sj,SQL2000报告不支持UNION SQL 查询,是不是这个语句是SQL更高版本的?
      

  7.   


     解决方案:表值函数+视图,例句:SELECT LastName,FirstName,Title Employees
    UNION
    SELECT LastName,FirstName,Title Users         
         建立表值函数:
    CREATE FUNCTION dbo.FuncEmployeeAndUser()
    RETURNS TABLE
    AS
    RETURN(
    SELECT LastName,FirstName,Title Employees
    UNION
    SELECT LastName,FirstName,Title Users
    )
         建立视图:
    CREATE VIEW EmployeeAndUser AS
    SELECT *
    FROM FuncEmployeeAndUser()百度找的解决方案~ 
      

  8.   

    只能用union all,但是有重复风险,用union报告不能DISINCT方式选择text,ntext,image数据类型,但是我其中一个字段正好是字符,糟糕!