Access交流中心

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

求联合查询代码

汪国群  发表于:2011-05-10 21:59:53  
复制

有3张表,一个缴纳表,一个工资扣款表,一个其他扣款表,表列数一致(门店,姓名,缴纳)、(门店,姓名,工资扣款)、(门店,姓名,其他扣款)

现在想让在一个表中连接起来,内容是门店,姓名,缴纳,工资扣款,其他扣款,差异(=缴纳-工资扣款-其他扣款),请看附件,求高手帮忙,万分感谢

 

Top
网行者 发表于:2011-05-11 06:07:10
SELECT 缴纳表.门店, 缴纳表.姓名, 缴纳表.缴纳, 工资扣款表.工资扣款, 其他扣款表.其他扣款, [缴纳]-[工资扣款]-[其他扣款] AS 差异
FROM (缴纳表 INNER JOIN 工资扣款表 ON (缴纳表.门店 = 工资扣款表.门店) AND (缴纳表.姓名 = 工资扣款表.姓名)) INNER JOIN 其他扣款表 ON (工资扣款表.门店 = 其他扣款表.门店) AND (工资扣款表.姓名 = 其他扣款表.姓名);

网行者 发表于:2011-05-11 06:10:55

SELECT 缴纳表.门店, 缴纳表.姓名, 缴纳表.缴纳, 工资扣款表.工资扣款, 其他扣款表.其他扣款, [缴纳]-[工资扣款]-[其他扣款] AS 差异
FROM (缴纳表 INNER JOIN 工资扣款表 ON (缴纳表.门店 = 工资扣款表.门店) AND (缴纳表.姓名 = 工资扣款表.姓名)) INNER JOIN 其他扣款表 ON (缴纳表.姓名 = 其他扣款表.姓名) AND (缴纳表.门店 = 其他扣款表.门店);

 

另,建议再建个员工表



chenfeng 发表于:2011-05-20 20:28:48

个人认为INNER JOIN 最后视情况改为left join 或right join

关于联合查询,可以分别建立两个查询,用union或union all进行连接,前提是建立的两个查询字段数要相同。

 



瞿丽忠 发表于:2011-05-21 10:13:12

我认为用 inner join的话,如果3表姓名不一致的话,会丢失一些数据。 而改用LEFT JOIn或 right join的话,必须保证一个表中的姓名在其他两个表中均有体现。

用联合查询

     SELECT 门店, 姓名, 缴纳, 0 AS 工资扣款, 0 AS 其他扣款

     FROM 缴纳表

     union

    

     SELECT 门店, 姓名, 0 AS 缴纳,工资扣款, 0 AS 其他扣款

     FROM 工资扣款表    

     union

    

     SELECT 门店, 姓名, 0 AS 缴纳, 0 AS 工资扣款, 其他扣款

     FROM 其他扣款表;



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