access的sql语句用两个left join

问题描述

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

是这样的,只有用来分组的字段才能不写为聚合统计函数形式。

时间: 2024-08-02 10:44:42

access的sql语句用两个left join的相关文章

sql语句-如何用SQL语句实现两张表(无关联)查询后,分别将各自的一个字段,插入一个新表。

问题描述 如何用SQL语句实现两张表(无关联)查询后,分别将各自的一个字段,插入一个新表. 有A.B.C三张表如下, 表 A 表B 学生ID(主键) 学生名称 课程ID(主键)| 课程名称 表 C 学生ID 课程ID (联合主键) 那么,通过SQL语句操作如何用学生姓名和课程名(只能获取学生姓名和课程名)将课程ID和学生ID插入到C表(C表中有课程ID和学生ID并且是联合主键),感激不尽. 解决方案 你可以定义2个变量,分别从表A表B用名称查询到ID.在表C的新增语句中使用这2个变量. 不过你这

access数据库-ADO操作Access 的SQL 语句怎么用Access 查询设计的SQL 视图改造一下就能使用

问题描述 ADO操作Access 的SQL 语句怎么用Access 查询设计的SQL 视图改造一下就能使用 ADO操作Access 的SQL 语句怎么用Access 查询设计的SQL 视图改造一下就能使用. 解决方案 Access的试图只能内部VBA使用,你得把完整得SQL复制到程序中,作为ADO的Open()或Execute()方法的参数调用.

怎样写SQL语句取两个日期之间的年月作为列名,两个日期是变量的

问题描述 怎样写SQL语句取两个日期之间的年月作为列名,两个日期是变量的比如 我取2000-01 到2011-12之间的年月在 test表里 id name1张山2张三3李四弄成这样id name 2000-01 2000-01 2000-01 2000-01 2000-01~~~2011-06 1张山NULLNULLNULLNULLNULL NULL2张三NULLNULLNULLNULLNULL NULL3李四NULLNULLNULLNULLNULL NULL我用这种方法写,不过它报错.dec

SQL语句计算两个日期之间有多少个工作日的方法_MsSql

/* 因为工作中一个奇怪的需求,要用SQL语言计算两个日期间有多少个工作日. 设定是一个星期有5个工作日,从星期一到星期五 说明:   第一个星期的工作日数:DATEPART(dw, @begdt)-DATEPART(dw, @begdt),最少0天   末一个星期的工作日数:DATEPART(dw, @enddt),最多5天 计算方法:   如果两个日期处在同一个星期内,直接计算"第一个星期的工作日数"   否则按下面的公式计算     (两个日期间的总天数 - 第一个星期的天数 -

SQL语句的两次执行问题

     昨天下午,写充值窗口时,出现了SQL语句被执行两次的问题.头痛了一下午和一晚上.     充值的窗口要操作两张表,一张是学生的基本信息表,就是将充值金额写入.另一张表,是用来存放本次充值的信息,比如:充值时间日期,谁充的钱...对前一张表的操作很快就写好了.但是在修改第二张表时,却出现了问题.      先来看一下代码: '修改教师充值表 SQL3 = "insert into tearechargeinfo values('" & strCardNum &

同一个sql语句 连接两个数据库服务器_MsSql

exec sp_addlinkedserver '逻辑名称','','SQLOLEDB','远程服务器名或ip地址' exec sp_addlinkedsrvlogin '逻辑名称','false',null,'用户名','密码' go 建立完成之后就可以正常使用了 select * from 逻辑名称.数据库名称.dbo.表名称 这是一个完整的sql语句 使用完成之后要,删除掉建立的虚拟连接 exec sp_dropserver '逻辑名称','droplogins'

SQL语句计算两个日期之间有多少个工作日的方法

/* 因为工作中一个奇怪的需求,要用SQL语言计算两个日期间有多少个工作日. 设定是一个星期有5个工作日,从星期一到星期五 说明:   第一个星期的工作日数:DATEPART(dw, @begdt)-DATEPART(dw, @begdt),最少0天   末一个星期的工作日数:DATEPART(dw, @enddt),最多5天 计算方法:   如果两个日期处在同一个星期内,直接计算"第一个星期的工作日数"   否则按下面的公式计算     (两个日期间的总天数 - 第一个星期的天数 -

同一个sql语句 连接两个数据库服务器

exec sp_addlinkedserver '逻辑名称','','SQLOLEDB','远程服务器名或ip地址' exec sp_addlinkedsrvlogin '逻辑名称','false',null,'用户名','密码' go 建立完成之后就可以正常使用了 select * from 逻辑名称.数据库名称.dbo.表名称 这是一个完整的sql语句 使用完成之后要,删除掉建立的虚拟连接 exec sp_dropserver '逻辑名称','droplogins'

sql语句-数据库两条检索语句中取相同元素怎么做到

问题描述 数据库两条检索语句中取相同元素怎么做到 目前有两条数据库检索语句 查询同一张表 分别得到部分记录,然后我想找到A语句中所有记录有哪些是在B语句查询结果中出现的,怎么做到? A语句: select id from mytab where age > 25 B语句: select id from mytab where city = 'beijing' 现在想查找B结果中有哪几个是在A结果中出现的,怎么做到?AB语句只是根据我的需求打的一个比方,别跟我说用 select id from m