比如A表
ID     Pname     TypeA     TypeB
1        aaaaa         1               2
2        bbb          2               2TypeA表
ID   TypeName
1       大类一
2       大类二TypeB表
ID   TypeName
1       小类一
2       小类二这样三个表,由于在A表中的TypeA,TypeB字端代表相应表中的内容,我想在Select A表中内容时,TypeA,TypeB字缎显示相应TypeA,TypeB表中的名称,请问SQL语句怎么写?

解决方案 »

  1.   

    SELECT A.ID, A.Pname, TypeA.TypeName, TypeB.TypeName
    FROM A
      LEFT JOIN TypeA ON A.TypeA = TypeA.ID
      LEFT JOIN TypeB ON A.TypeB = TypeB.ID
      

  2.   

    wuyi8808(tm) studio 2005  :) 已解
      

  3.   

    SELECT A.ID, A.Pname, TypeA.TypeName, TypeB.TypeName
    FROM A
      LEFT JOIN TypeA ON A.TypeA = TypeA.ID
      LEFT JOIN TypeB ON A.TypeB = TypeB.ID或者SELECT A.ID,A.Pname, TypeA.TypeName, TypeB.TypeName
    FROM A,TypeA,TYPEB
    A.TypeA=TypeA.ID AND A.TypeB=TypeB.ID
      

  4.   

    楼上的,第二种方法不行,刚才就是出错了,所以来求另一种方法,正在试
    wuyi8808(tm) studio 2005  
    的方法ing
      

  5.   

    SELECT A.ID,A.Pname, TypeA.TypeName, TypeB.TypeName
    FROM A,TypeA,TYPEB
    WHERE A.TypeA=TypeA.ID AND A.TypeB=TypeB.ID
      

  6.   

    string sqlShow = "SELECT A.ID, A.Pname, TypeA.TypeName, TypeB.TypeName ";
    sqlShow += "LEFT JOIN TypeA ON A.TypeA = TypeA.ID ";
    sqlShow += "LEFT JOIN TypeB ON A.TypeB = TypeB.ID";
    语法错误 (操作符丢失) 在查询表达式 A.TypeA = TypeA.ID LEFT JOIN TypeB ON A.TypeB = TypeB.ID' 中。
      

  7.   

    string sqlShow = "SELECT A.ID, A.Pname, TypeA.TypeName, TypeB.TypeName FROM A ";
    sqlShow += "LEFT JOIN TypeA ON A.TypeA = TypeA.ID ";
    sqlShow += "LEFT JOIN TypeB ON A.TypeB = TypeB.ID";
    语法错误 (操作符丢失) 在查询表达式 A.TypeA = TypeA.ID LEFT JOIN TypeB ON A.TypeB = TypeB.ID' 中。
      

  8.   

    看sqlShow最终组合得到什么东西,放到SQL中执行一下就知道啦。
      

  9.   

    string sqlShow = "SELECT A.ID, A.Pname, TypeA.TypeName, TypeB.TypeName FROM A ";
    sqlShow += "LEFT JOIN TypeA ON A.TypeA = TypeA.ID ";
    sqlShow += "LEFT JOIN TypeB ON A.TypeB = TypeB.ID ";
    sqlShow += " Where Type.A=1";
    这就是最终语句,可是却出现
    语法错误 (操作符丢失) 在查询表达式 A.TypeA = TypeA.ID LEFT JOIN TypeB ON A.TypeB = TypeB.ID' 中。我要晕了
      

  10.   

    SELECT A.ID, A.Pname, TABLEA.TypeName, TABLEB.TypeName FROM A 
    LEFT OUTER JOIN TypeA TABLEA ON A.TypeA = TABLEA.ID
    LEFT OUTER JOIN TypeB TABLEB ON A.TypeB = TABLEB.ID
      

  11.   

    string sqlShow = @"
    SELECT A.ID, A.Pname, TypeA.TypeName, TypeB.TypeName
    FROM A
      LEFT JOIN TypeA ON A.TypeA = TypeA.ID
      LEFT JOIN TypeB ON A.TypeB = TypeB.ID
    ";
      

  12.   

    我发现用一个left join没错误,用了两个以上就出现着情况,为什么啊?
      

  13.   

    你也可以试试这个, 不过我还是建议你使用 LEFT JOIN, 语法更清晰.
    string sqlShow = @"
    SELECT A.ID, A.Pname, TypeA.TypeName, TypeB.TypeName
    FROM A, TypeA, TypeB
    WHERE A.TypeA = TypeA.ID AND A.TypeB = TypeB.ID
    ";
      

  14.   

    SELECT Procs.Pname,TypeA.Tname,TypeB.Tname from Procs LEFT JOIN [TypeA] ON Procs.TypeA=TypeA.id LEFT JOIN [TypeB] ON Procs.TypeB=TypeB.id 还是这错误!!!!!大家不要拦住我,我要去跳楼~~~~~~~~
      

  15.   

    怎么用一个Left join 木问题,两个以上就出问题??
    难道Accexx only 支持一个Left join??
      

  16.   

    我还以为你用的是 SQL Server, 如果是 Access 数据库, 建议使用如下语句:string sqlShow = @"
    SELECT A.ID, A.Pname, TypeA.TypeName, TypeB.TypeName
    FROM A, TypeA, TypeB
    WHERE A.TypeA = TypeA.ID AND A.TypeB = TypeB.ID
    ";
      

  17.   

    wuyi8808(tm) studio 2005  :) 
    是不是ACCESS不支持Left Join ??
    但是我用一个可以,用两个就不可以了,
    还有,用
    string sqlShow = @"
    SELECT A.ID, A.Pname, TypeA.TypeName, TypeB.TypeName
    FROM A, TypeA, TypeB
    WHERE A.TypeA = TypeA.ID AND A.TypeB = TypeB.ID这样语句,记录无缘无辜会多出N条......
      

  18.   

    select A.ID, A.Pname, TypeA.TypeName as TypeA, TypeB.TypeName as TypeB from A, TypeA, TypeB where A.TypeA=TypeA.ID and A.TypeB=TypeB.ID
      

  19.   

    Access 我不太熟悉, 平常我都是使用 SQL Server 的. 我想 Access 有可能不支持多于一个的 JOIN, 用 WHERE A.TypeA = TypeA.ID AND A.TypeB = TypeB.ID 应该没问题的.
      

  20.   

    SELECT Procs.ID, Procs.Pname, TypeA.TypeName, TypeB.TypeName
    FROM Procs 
    left join TypeA on TypeA.id=Procs.id
    left join TypeB on TypeB.id=Procs.id
      

  21.   

    经测试, 下面这个查询语句在 Access 中可以正常工作:SELECT P.ID, P.Pname AS 名称, A.Tname AS 大类, B.Tname AS 小类
    FROM TypeB B
      RIGHT JOIN (TypeA A RIGHT JOIN Procs P ON A.ID = P.TypeA)
      ON B.ID = P.TypeB