查询A表,A表查询我没问题,现在问题是:A表中有三个字段是另外三个表中的编号,我想要他们的名称,但是名称是在那三个表中。我本想通过下面这条语句实现,未料出错了……SELECT e.name, d.name as department, c.name as company, s.name as supplier FROM employee e (INNER JOIN depart d ON d.id = e.departID, INNER JOIN comp c ON c.id = e.companyID, INNER JOIN supp s ON s.id = e.supplierID)

解决方案 »

  1.   

    我有一个语句和楼主的情况很像
    表tbl_ISB: 主键ISB_ID  外键:  Customer_ID,Node_ID ,Owner_ID 
      tbl_Owner
      tbl_Customer
      tbl_Node
    你把列名和表名换一下就行了
    SELECT dbo.tbl_ISB.ISB_ID, dbo.tbl_Owner.Owner_Name, 
          dbo.tbl_Customer.Customer_Name1, dbo.tbl_Node.Node_Name
    FROM dbo.tbl_ISB LEFT OUTER JOIN
          dbo.tbl_Customer ON 
          dbo.tbl_ISB.Customer_ID = dbo.tbl_Customer.Customer_ID LEFT OUTER JOIN
          dbo.tbl_Node ON dbo.tbl_ISB.Node_ID = dbo.tbl_Node.Node_ID LEFT OUTER JOIN
          dbo.tbl_Owner ON dbo.tbl_ISB.Owner_ID = dbo.tbl_Owner.Owner_ID
      

  2.   

    格式化一下,好看一点
    SELECT tbl_ISB.ISB_ID, 
           tbl_Owner.Owner_Name, 
           tbl_Customer.Customer_Name1, 
           tbl_Node.Node_Name
    FROM tbl_ISB 
                LEFT OUTER JOIN  
         dbo.tbl_Customer 
                ON 
         dbo.tbl_ISB.Customer_ID = dbo.tbl_Customer.Customer_ID 
                LEFT OUTER JOIN
         dbo.tbl_Node 
                ON 
         dbo.tbl_ISB.Node_ID = dbo.tbl_Node.Node_ID 
                LEFT OUTER JOIN
         dbo.tbl_Owner 
                ON 
         dbo.tbl_ISB.Owner_ID = dbo.tbl_Owner.Owner_ID
      

  3.   

    多谢二楼的答案。不过我已试过用这样方式,SQL SERVER是行的,但是不适合ACCESS 2000,对不起是我没说清楚ACCESS2000
      

  4.   

    SELECT e.name, d.name as department, c.name as company, s.name as supplier 
    FROM employee e , depart d , comp c, supp s
    where d.id = e.departID  and  c.id = e.companyID and   s.id = e.supplierID 
      

  5.   

    access2000可以用inner join 啊
    select * from e inner join d on e.*=d.* inner join c on e.*=c.* inner join s on e.*=s.*
    具体*号请用相应的字段代替。
      

  6.   

    那是你的access有问题吧,我用access2000一直都是用inner join 连接的。