Access交流中心

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

联合查询中所选定的两个数据表或查询中的列数不匹配

苏雨杭  发表于:2011-06-16 23:22:12  
复制

联合查询中所选定的两个数据表或查询中的列数不匹配

 

Top
煮江品茶 发表于:2011-06-17 08:42:58

补齐即可。

 



曹光耀 发表于:2011-06-17 08:52:09
如果表1中有五个字段,表2中有两个字段,联合查询时,构造表1的select语句时,只能选择最多两个字段同表2进行联合,如"select 字段1,字段2 from 表1"

振宇 发表于:2011-06-17 09:18:58

SELECT [材料名称]+"-合计" AS 材料名称1, Sum(AA.出库数量) AS 出库数量1 FROM AA GROUP BY AA.材料名称   UNION SELECT AA.材料名称, AA.出库数量 FROM AA UNION SELECT "产品总计" AS 表达式1, Sum(AA.出库数量) AS 出库数量之Sum
FROM AA;

 

 

这段中如果要增加一个字段要怎么增加啊.请教各位老师,谢谢



曹光耀 发表于:2011-06-17 09:23:23

煮江老哥说的,是其中之一的方法,不过是下策,因为我们有时,要有选择的列数,而不的所有列的数据

1。如果两表列数相等,且对应列的数据类型相同,则:

select * from 表1
UNION  'ALL '注释ALL,去掉重复

select * from 表2;

或者:

select 物料号,名称 from 表1
UNION  'ALL '注释ALL,去掉重复

select 物料号,名称 from 表2;

 

2。如果两表列数不相等,且对应列的数据类型相同,则:

表1有5列:"SELECT 表1.物料号, 表1.名称, 表1.价格, 表1.产地, 表1.备注 FROM 表1;"

表2只有2列:"SELECT 表2.物料号, 表2.名称 FROM 表2;"

表1联合表2时,SQL如下:

select 物料号,名称 from 表1
UNION  'ALL '注释ALL,去掉重复

select 物料号,名称 from 表2;



振宇 发表于:2011-06-17 09:46:59

这个方法不对,不是这样的?????



曹光耀 发表于:2011-06-17 11:31:55

最好上传你的示例



煮江品茶 发表于:2011-06-17 11:41:10

光耀同志:

 

所论失之偏颇,联合查询之构造并非取若干表之与集。如:收入表中有收入ID、材料ID、日期、收入数量四字段;发出表中有发出ID、材料ID、日期、发出数量四字段;库存表中有库存ID、材料ID、日期、库存数量四字段,则三表的字段与集为材料ID、日期两字段,以此两字段构成联合查询并无实际意义。

 

于是,我们打算构造收发存查询时,并不考虑三表的字段与集,而是天马行空人为构成联合查询。如:


select format(日期,"yyyymmdd") & "A" & 库存ID as 查询ID,日期,材料ID,库存数量 as 期初数量,0 as 收入数量,0 as 发出数量 from 库存表
UNION ALL select format(日期,"yyyymmdd") & "B" & 收入ID as 查询ID,日期,材料ID,0 as 期初数量,收入数量,0 as 发出数量 from 收入表
UNION ALL select format(日期,"yyyymmdd") & "C" & 发出ID as 查询ID,日期,材料ID,0 as 期初数量,0 as 收入数量,发出数量 from 发出表

 

这样我们就得到了一个关于收发存的联合查询,在这个基础上可以进一步写包含期末库存的收发存查询。

 



西出阳关无故人 发表于:2011-06-17 21:19:29

简单点,试一下:

SELECT [材料名称]+"-合计" AS 材料名称1, Sum(AA.出库数量) AS 出库数量1 FROM AA GROUP BY [材料名称]+"-合计"  

UNION

SELECT AA.材料名称, AA.出库数量 FROM AA

UNION

SELECT "产品总计" AS 表达式1, Sum(AA.出库数量) AS 出库数量之Sum FROM AA GROUP BY "产品总计"



西出阳关无故人 发表于:2011-06-17 22:35:43

或者把三个查询单独运行,

1、SELECT [材料名称]+"-合计" AS 材料名称1, Sum(AA.出库数量) AS 出库数量1 FROM AA GROUP BY [材料名称]+"-合计"  

2、SELECT AA.材料名称, AA.出库数量 FROM AA

3、SELECT "产品总计" AS 表达式1, Sum(AA.出库数量) AS 出库数量之Sum FROM AA GROUP BY "产品总计"

看看结果的列数是否相同,每列的字段类型相同否?

如果没有问题,那应该不会有问题的。



振宇 发表于:2011-06-21 19:22:44

点击下载此附件

 

请各位老师指点



西出阳关无故人 发表于:2011-06-21 20:04:16

这是你的(查询3的)SQL:

SELECT DISTINCTROW 车加工出库.出库日期, 车加工出库.客户, 车加工出库.材料名称, Sum(车加工出库.出库数量) AS 出库数量1 FROM 车加工出库 GROUP BY 车加工出库.材料名称.客户
UNION
SELECT 车加工出库.材料名称.客户, 车加工出库.出库数量 FROM 车加工出库

UNION

SELECT "产品总计" AS 表达式1, Sum(车加工出库.出库数量) AS 出库数量之Sum FROM 车加工出库;

1、你看看第一部分:

SELECT DISTINCTROW 车加工出库.出库日期, 车加工出库.客户, 车加工出库.材料名称, Sum(车加工出库.出库数量) AS 出库数量1 FROM 车加工出库 GROUP BY 车加工出库.材料名称.客户
单独运行都是错误的,更何况他有4列(出库日期, 客户, 材料名称,出库数量1),“DISTINCTROW ”什么意思?“车加工出库.材料名称.客户”什么意思?

2、第二部分:

SELECT 车加工出库.材料名称.客户, 车加工出库.出库数量 FROM 车加工出库

单独运行也是错误的;“车加工出库.材料名称.客户”什么意思?

3、第三部分:

SELECT "产品总计" AS 表达式1, Sum(车加工出库.出库数量) AS 出库数量之Sum FROM 车加工出库

单独运行没有问题,只有2列( 表达式1,出库数量之Sum )

 

联合查询中的的每一个部分都必须可以单独运行,每一个部分的列数必须一样,每列的数据类型尽量一致,这些都是联合查询不可或缺的条件。

你想要干什么,说吧...



振宇 发表于:2011-06-21 22:21:35
日期

客户

 材料名称   出库数量    
 6-1

客户A

 铅笔 100     
 6-1

客户A

 铅笔  100    
 6-1合计

客户A 合计

 铅笔合计  200    
这是我要的效果,

西出阳关无故人 发表于:2011-06-21 23:34:07

试一试:

SELECT 车加工出库.出库日期, 车加工出库.客户, 车加工出库.材料名称, 车加工出库.出库数量,材料流水号A
FROM 车加工出库
union
SELECT 车加工出库.出库日期, 车加工出库.客户, 车加工出库.材料名称, Sum(车加工出库.出库数量) AS 出库数量之总计,'合计' as 材料流水号A
FROM 车加工出库
GROUP BY 车加工出库.出库日期, 车加工出库.客户, 车加工出库.材料名称

看看是否符合要求?

比你的效果增加了一个流水号的列,主要用于标记是合计值还是某个流水的值



西出阳关无故人 发表于:2011-06-21 23:37:35
如图

西出阳关无故人 发表于:2011-06-21 23:38:03


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