select Items.MatrID,sum(ItemIn.Cost) as InCost
 into temp001
 from Items
 left join ItemOut on Items.MatrID = ItemOut.MatrID
 left join ItemIn on Items.MatrID = ItemIn.MatrID 
 left join ItemBack on Items.MatrID = ItemBack.MatrID
 where (Items.Date between  :Date1 and :Date2) 
 group by Items.MatrID
 order by Items.MatrID表Items JOIN 了三个表ItemOut,ItemIn.ItemBack,这个语句在SQL中执行完全没有问题(使用同样的表),但是在Delphi6 + ado + Access中执行不了。
请问应该怎么修改?

解决方案 »

  1.   

    将其中的变量丢掉,直接将日期值组合进去。
    在ACCESS中,是日期是前后用#号包括的。如: #2002-08-11#
      

  2.   

    我是直接从delphi中贴过来的,所以没有改变量。
      

  3.   

    如果改成这样的话 也是不行的。select Items.MatrID,sum(ItemIn.Cost) as InCost
     into temp001
     from Items
     left join ItemOut on Items.MatrID = ItemOut.MatrID
     left join ItemIn on Items.MatrID = ItemIn.MatrID 
     left join ItemBack on Items.MatrID = ItemBack.MatrID
     group by Items.MatrID
     order by Items.MatrID但是我只Join一个表的话在Delphi中就可以
      

  4.   

    试试下面我写,你的逻辑好象有点问题。
    select Items.MatrID,sum(ItemIn.Cost) as InCost
     into temp001
     from Items
     where MatrID in 
    ((select Matrid from ItemOut)
     union (select MatrID from ItemIn)
     union (select MatrID from ItemBack))
     group by Items.MatrID
      

  5.   

    试试下面我写
    select Items.MatrID,sum(ItemIn.Cost) as InCost
     into temp001
     from ItemOut,ItemIn,ItemBack
     left join ItemOut on Items.MatrID = ItemOut.MatrID
     left join ItemIn on Items.MatrID = ItemIn.MatrID 
     left join ItemBack on Items.MatrID = ItemBack.MatrID
     group by Items.MatrID
     order by Items.MatrID
      

  6.   

    CSDN 说 :多人接受答案了。
      

  7.   

    select Items.MatrID,sum(ItemIn.Cost) as InCost
     into temp001
     from ItemOut,ItemIn,ItemBack
     left join ItemOut on Items.MatrID = ItemOut.MatrID
     left join ItemIn on Items.MatrID = ItemIn.MatrID 
     left join ItemBack on Items.MatrID = ItemBack.MatrID
     group by Items.MatrID
     order by Items.MatrID
      

  8.   

    谢谢大家,我回去再试一下。还有,上面的我泄漏了一点,本来应该是对多个表中的列都有聚合的:
    select Items.MatrID,sum(ItemIn.Cost) as InCost,sum(ItemOut.Cost) as OutCost,sum(ItemBack.Cost) as BackCost
     into temp001
     from Items
     left join ItemOut on Items.MatrID = ItemOut.MatrID
     left join ItemIn on Items.MatrID = ItemIn.MatrID 
     left join ItemBack on Items.MatrID = ItemBack.MatrID
     group by Items.MatrID
     order by Items.MatrID
      

  9.   

    我想应该是,不论用什么主要的还是SQL语句的问题,如果是在SQL就没有问题那一定是在DELPHI中的变量问题,在DELPHI中的SQL语句中直接用变量经常出问题的,我的方法是用Query1->ParamByName('aaa'):= 这个AAA是不用定意的然后在SQL中就可以直接用AAA就可以了.
      

  10.   

    在Access中不能用jion,那能不能用union?