Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

学习【access小品】趣谈子查询,对查询中的表名和别名引用的疑惑

我的ACCESS  发表于:2014-01-01 16:47:45  
复制

今天学习煮江品茶老师的【access小品】趣谈子查询http://www.accessoft.com/article-show.asp?id=4429

首先把”基础查询“代码里的表名改成表的别名:卡片 AS  A,期初 AS B, 收料 AS C,发料 AS D

修改后的代码为:SELECT A.物资ID,A.名称,B.日期,B.期初,0 as 收料,0 as 发料 FROM 卡片 AS A INNER JOIN 期初 AS B ON A.物资ID =B.物资ID
union all
SELECT A.物资ID,A.名称,C.日期,0 AS 期初,C.收料,0 AS 发料 FROM (卡片 AS A INNER JOIN 期初 AS B ON A.物资ID = B.物资ID)  INNER JOIN 收料 AS C ON A.物资ID =C.物资ID
UNION ALL SELECT A.物资ID,A.名称,D.日期,0 AS 期初,0 AS 收料,D.发料 FROM (卡片 AS A INNER JOIN 期初 AS B ON A.物资ID = B.物资ID) INNER JOIN 发料 AS D ON A.物资ID =D.物资ID
ORDER BY 物资ID, 日期;
运行结果正常!

然后在做”新查询1“,代码为:SELECT a.日期, a.物资ID, a.名称, a.期初, a.收料, (select sum(b.收料) from 新基础查询 as b where b.物资ID=a.物资ID and b.日期<=a.日期) AS 收料累计, a.发料, (select sum(b.发料) from 新基础查询 as b where b.物资ID=a.物资ID and b.日期<=a.日期) AS 发料累计
FROM 新基础查询 AS a;
不能正常运行,总出现错误:输入参数a.日期,而把代码中”新基础查询“改成”基础查询“又运行正常,为何?是不是表名和别名有区别呢?

 

 

 

Top
我的ACCESS 发表于:2014-01-01 16:52:01
图片和附件怎么不能上传?

煮江品茶 发表于:2014-01-01 16:55:16


我的ACCESS 发表于:2014-01-01 17:08:35
老师笑而不答

落尘_小新 发表于:2014-01-01 19:37:31

呵呵,老师笑的是你这个问题太有意思了.这和别名没一毛钱关系.

FROM 新基础查询 AS a

FROM 新基础查询 AS b

这里的"新基础查询"就是你数据库中已经存在的表或查询的名称.

你把名为"基础查询"的SQL语句修改了,但名称没有更改.那在新建的查询中,你上哪去找所谓的"新基础查询".




我的ACCESS 发表于:2014-01-01 20:22:15

落尘_小新 ,新年好

是我没说清楚,实际上我把“基础查询”里的代码修改后,生成了一个“新基础查询”的,然后在运行“新查询1”的,就出现了错误

 



总记录:5篇  页次:1/1 9 1 :