select top 25 a.[ID],a.[OrderID],b.[Name] as pName,a.[Quantity],a.[Sum],a.[Date],a.IsPay,c.[Name] as mName from [Order] a left outer join Product b on a.ProductID=b.ProductID  left outer join Member c on a.MemberID=c.MemberID  where 1=1  order by a.[ID] Desc就是这样,就关联一下产品表读产品名称,然后关联一下会员表读会员名字
提示语法错误(操作符丢失)
我不知道什么原因,帮忙看一下啊

解决方案 »

  1.   

    where 1=1? 这句是啥意思?
      

  2.   


    这在这里是没用的,就加了一个where关键字,因为后面有时候会加and条件,所以防止出错啊
      

  3.   


    不会吧,哦,我用的是access数据库,是不是access不支持这种语句的啊?
      

  4.   


    Access的话,改成这样试试select top 25 
    a.[ID],a.[OrderID],b.[Name] as pName,a.[Quantity],a.[Sum],a.[Date],a.IsPay,
    c.[Name] as mName 
    from [Order] a,Product b,Member c 
    where a.ProductID=b.ProductID and a.MemberID=c.MemberID
    order by a.[ID] Desc
      

  5.   


    呵呵,我原来也是用这种方式,但是考虑到表多了容易乱,所以改用这种方式,原来的代码是这样的
    public DataSet GetList(int intPageSize, int intPageIndex, string strWhere, string strOrderField, string strOrderDirection)
            {
                StringBuilder strSql = new StringBuilder();
                if (intPageIndex == 1)
                {
                    strSql.Append("select top " + intPageSize.ToString() + " a.ID,a.OrderID,b.Name as pName,a.Quantity,a.Sum,a.[Date],a.IsPay,c.Name as mName from [Order] a");
                    strSql.Append(" left outer join Product b on a.ProductID=b.ProductID ");
                    strSql.Append(" left outer join Member c on a.MemberID=c.MemberID ");
                    strSql.Append(" where 1=1 " + strWhere + " order by a." + strOrderField + " " + strOrderDirection + "");
                }
                else
                {
                    strSql.Append("select top " + intPageSize.ToString() + " a.ID,a.OrderID,b.Name as pName,a.Quantity,a.Sum,a.[Date],a.IsPay,c.Name as mName from [Order] a");
                    strSql.Append(" left outer join Product b on a.ProductID=b.ProductID ");
                    strSql.Append(" left outer join Member c on a.MemberID=c.MemberID ");
                    strSql.Append(" where a.[" + strOrderField + "] not in(select top " + (intPageIndex - 1) * intPageSize + " [" + strOrderField + "] from [Order] where 1=1 " + strWhere + " order by [" + strOrderField + "] desc) " + strWhere + " Order by a.[" + strOrderField + "] " + strOrderDirection + "");
                }
                return DbHelperSQL.Query(strSql.ToString());
            }
      

  6.   


    请问哪里不同,应该怎么改呢这个查询,调试出来的语句是
    select top 25 a.ID,a.OrderID,b.Name as pName,a.Quantity,a.Sum,a.[Date],a.IsPay,c.Name as mName from [Order] a left outer join Product b on a.ProductID=b.ProductID  left outer join Member c on a.MemberID=c.MemberID  where 1=1  order by a.ID Desc
    执行的时候出错的
      

  7.   

    Access不支持left outer join这样的语法参考
    http://www.cnblogs.com/wayne1017/archive/2006/09/15/505030.html
      

  8.   

    谢谢,access比sql数据库麻烦多了
      

  9.   


    Sorry,Access支持这样的语法,改下试试:select  a.ID,a.OrderID,b.[Name] as pName,a.Quantity,a.Sum,a.[Date],a.IsPay,c.Name as mName 
    from 
    ([Order] a left outer join Product b on a.ProductID=b.ProductID) 
    left outer join Member c on a.MemberID=c.MemberID 
    where 1=1 order by a.ID Desc
      

  10.   

    谢谢,我去搜了下access的left outer join就知道了,要加括号的,不能跟sql一样并列着来