问题描述
Access用两个leftjoin,我已经把每个leftjoin用()了,但还是报试图执行的查询中不包含作为聚合函数一部分的特定表达式'ID'。说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.Data.OleDb.OleDbException:试图执行的查询中不包含作为聚合函数一部分的特定表达式'ID'。selecttop1Product.IDasID,min(ProductImg.PicURL)ASPicURL,Property.CNameasCName,CShowfrom((ProductleftjoinPropertyonProduct.XiLie_ID=Property.ID)leftjoinProductImgonProductImg.ParentID=Product.ID)orderbyProduct.Sortdesc,Product.IDdesc,ProductImg.IDdesc
解决方案
解决方案二:
语句呢
解决方案三:
这个写法就有问题:from((ProductleftjoinPropertyonProduct.XiLie_ID=Property.ID)leftjoinProductImgonProductImg.ParentID=Product.ID)from后的括号返回个什么是表么,如果是表你怎么没起名呢
解决方案四:
用oracle吧
解决方案五:
Product.ID字段必须要包含在groupby中selecttop1Product.IDasID,min(ProductImg.PicURL)ASPicURL,Property.CNameasCName,CShowfrom((ProductleftjoinPropertyonProduct.XiLie_ID=Property.ID)leftjoinProductImgonProductImg.ParentID=Product.ID)groupbyProduct.IDorderbyProduct.Sortdesc,Product.IDdesc,ProductImg.IDdesc
解决方案六:
既然有了聚合函数min(picurl),那么就不能写id了,只能写min(id)之类的。
解决方案七:
另外你写的两层嵌套的括号,比较诡异,不知道是否正确。删除掉括号,肯定是符合JetSQL语法的。加上括号就不好说了。
解决方案八:
引用4楼kongwei521的回复:
Product.ID字段必须要包含在groupby中selecttop1Product.IDasID,min(ProductImg.PicURL)ASPicURL,Property.CNameasCName,CShowfrom((ProductleftjoinPropertyonProduct.XiLie_ID=Property.ID)leftjoinProductImgonProductImg.ParentID=Product.ID)groupbyProduct.IDorderbyProduct.Sortdesc,Product.IDdesc,ProductImg.IDdesc
是这样的,只有用来分组的字段才能不写为聚合统计函数形式。