哈哈,SQL Server的语法与ACCESS的语法是有点不同的.你不要乱用哦.
例,把join改成where试试.

解决方案 »

  1.   

    to afeisky(刀光剑影(离开xkx@MUD的日子))
      大虾,你能具体改一改吗?我已经晕了头了。
      

  2.   

    to afeisky(刀光剑影(离开xkx@MUD的日子))
      救人救到底吧。
      

  3.   

    我改成这样也不行呀
    select d.wname,o.customer,o.OrderTime
           ,d.quantity
           ,g.gethering
          ,g.remain
          ,f.farestatus
          ,s.quantity      
      from 
        orderdetail as d,orders as o,gethering as g,fare as f,shipment as s
       where
          d.OrderID=o.Orderid and
            d.DetailID=*g.DetailID
          and   d.detailid=*f.detailid
           and  d.detailid=*s.detailid
       
             
            order by d.wname错误提示:The table 'orderdetail' is an inner member of an outer-join clause. This is not allowed if the table also participates in a regular join clause.
    只有去掉'd.OrderID=o.Orderid and'
      

  4.   

    to cszhz(丑小鸭) 
      我不能用内连接的,就是说不能用where ##=## 这种方式,因为我要求只限制OrderDetail的行而包含其它表的所有行。请问用Where如何实现????
      

  5.   

    我认为用连接语句不可以用where吧
    where只是可以加查询条件的语句(个人认为)
    我认为应该在括号上下文章
      

  6.   

    to  di2000(一只菜鸟) 
    可是括号加在哪呢?我像这样:
    select d.wname,o.customer,o.OrderTime
           ,d.quantity
           ,g.gethering
          ,g.remain
          ,f.farestatus
          ,s.quantity      
      from 
         OrderDetail as d (left join gethering as g on d.DetailID=g.DetailID)
           ( left join fare as f on  d.detailid=f.detailid)
           ( left join shipment as s on d.detailid=s.detailid )
           ( join orders  as o on d.OrderID=o.OrderID)
           order by d.wname提示语法错。
      

  7.   

    to  di2000(一只菜鸟) 
    我像这样
    select d.wname,o.customer,o.OrderTime
           ,d.quantity
           ,g.gethering
          ,g.remain
          ,f.farestatus
          ,s.quantity      
      from 
        ( OrderDetail as d left join gethering as g on d.DetailID=g.DetailID
            left join fare as f on  d.detailid=f.detailid
            left join shipment as s on d.detailid=s.detailid 
            join orders  as o on d.OrderID=o.OrderID)
           order by d.wname
    在MS  SQL倒是没错了,可ACCESS还是错呀。
      

  8.   

    我觉得还是不要用 join 语句的好
    你改改吧
      

  9.   

    to WorldCreater(造化天尊) 
     为什么不能用,不用JOIN又能实现左连接,如何实现?请赐教。
      

  10.   

    to WorldCreater(造化天尊) 
    我一直在改,可怎么改呀?改来改去都不行呀
      

  11.   

      在Access2000中,可以这样写(语法检查通过),你可以试一下
    select d.wname,o.customer,o.OrderTime
          ,d.quantity
          ,g.gethering
          ,g.remain
          ,f.farestatus
          ,s.quantity      
      from 
        (((OrderDetail as d left join gethering as g on d.DetailID=g.DetailID)
            left join fare as f on  d.detailid=f.detailid)
            left join shipment as s on d.detailid=s.detailid)
            left join orders  as o on d.OrderID=o.OrderID
      

  12.   

    我觉得可能可用这种办法试
    select d.wname, o.customer, o.OrderTime, d.quantity, g.gethering,
      g.remain, f.farestatus, s.quantity      
    from orders o 
    Join OrderDetail d on d.OrderID = o.OrderID 
    left join gethering g on d.DetailID = g.DetailID
    left join fare f on  d.detailid = f.detailid
    left join shipment s on d.detailid = s.detailid
    order by d.wname
      

  13.   

    不使用外联
    select d.wname,o.customer,o.ordertime,d.quantity,g.gething,g.remain,
          f.farestatus,f.quantity
    from
          orderdetail as d,
          orsers as o,
          gething as g,
          fare as f
    where
         d.detailid in(select detailid from gethering) and
         d.detailid in(select detailid from fare) and
         d.detailid in(select detailid from shipment) and
         d.orderid in(select ofderid from orders)试试看.
      

  14.   

    不好意思,写快了一点,漏了一点东西,重新发出select d.wname,o.customer,o.ordertime,d.quantity,g.gething,g.remain,
          f.farestatus,f.quantity
    from
          orderdetail as d,
          orsers as o,
          gething as g,
          fare as f
    where
        d.detailid in(select detailid from gethering where detailid=d.detialid) and
        d.detailid in(select detailid from fare where detialid=d.detailid) and
        d.detailid in(select detailid from shipment where detailid=d.detailid) and
        d.orderid in(select ofderid from orders where orderid=d.orderid)
      

  15.   

    我喜欢VB,欢迎访问我的网站,上面有很多用VB编写的好东东.
    http://www.minisoft.d2g.com 
    1 疾病诊断专家系统;
    2 人工智能电子地图 ; 
    3 Word密码探测器;
    4 知道别人在干啥(局域网监视器)
    5 日积月累学英文
    愿意与广大VB爱好者交流. 
      

  16.   

    越来越不好意思:
    select d.wname,o.customer,o.ordertime,d.quantity,g.gething,g.remain,
          f.farestatus,f.quantity
    from
          orderdetail as d,
          orsers as o,
          gething as g,
          fare as f,
          shipment as s
    where
        g.detailid=d.detialid and
        f.detialid=d.detailid and
        s.detailid=d.detailid and
        o.orderid=d.orderid
      

  17.   

    什么乱七八糟
    懂不懂什么是left join
    和where不一样的老兄们乱讲
      

  18.   

    小弟不明白,还请明言! 多谢.
    left join gethering as g on d.DetailID=g.DetailID
    即使表D中的DetailID在g中不存在匹配项也要输出,是不是呀?
      

  19.   

    这个,刚刚开始学习SQL,很多地方不明白,还请各位高手不吝赐教. 在此谢过了!
      

  20.   

    你如果要在access中多表关联的话,可以试一下关联一个子关联啊,代码我等会打给你。
      

  21.   

    好了,为了简化,只关联三个(orderdetail, gethering, order)
    //////////////////////////////////////////////////////////////////
    select d.wname, tmp.customer, tmp.gethering
    from OrderDetail as d
    left join
    (select g.detailID,o.customer,g.remain from orders as o
     left join gethering as g on g.detailID=o.detailID) as tmp
    on d.detailID=tmp.detailID
    //////////////////////////////////////////////////////////////////
    好了,拙见如此,如果有很多表的话,打这些字符都很恐怖,不过能运行多表关联(我试过),如果有那位兄弟有更好的方法,希望能发到
    先在此谢谢了  ^_^