LEFT JOIN 用法一点心得
时 间:2008-11-29 08:43:30
作 者:andymark ID:1350 城市:深圳
摘 要:LEFT JOIN 用法一点心得
正 文:
LEFT JOIN 用法一点心得
LEFT JOIN 懂一点SQL语法的人都不会陌生,也没什么好写的,网上相关的语法书一大堆
最近,在做LEFT JOIN一个查询时,却怎么都查询不了自已想要的数据,真是奇怪透了。
在应用中,要把订单的结余数量统计出来,看看那些订单已经OK ,用LEFT JOIN是个不错的选择,为了方便理解,这里分开几个查询实现:
订单查询:
SELECT 订单表.OrderNo, 订单表.CPBH, Sum(订单表.SL) AS 订单总数 FROM 订单表 GROUP BY 订单表.OrderNo, 订单表.CPBH;
收货查询:
SELECT 送货表.OrderNO, 送货表.CPBH, Sum(送货表.SL) AS 收货总数 FROM 送货表 GROUP BY 送货表.CPBH, 送货表.OrderNO;
用LEFT JOIN 把订单结存数列出来
SELECT 订单查询.OrderNo, 订单查询.CPBH, 订单查询.订单总数, 收货查询.收货总数, (nz(订单查询.订单总数)-nz(收货查询.收货总数)) AS 结余订单数
FROM 订单查询 LEFT JOIN 收货查询 ON (订单查询.CPBH=收货查询.CPBH) AND (订单查询.OrderNo=收货查询.OrderNO);
最近,在做LEFT JOIN一个查询时,却怎么都查询不了自已想要的数据,真是奇怪透了。
在应用中,要把订单的结余数量统计出来,看看那些订单已经OK ,用LEFT JOIN是个不错的选择,为了方便理解,这里分开几个查询实现:
订单查询:
SELECT 订单表.OrderNo, 订单表.CPBH, Sum(订单表.SL) AS 订单总数 FROM 订单表 GROUP BY 订单表.OrderNo, 订单表.CPBH;
收货查询:
SELECT 送货表.OrderNO, 送货表.CPBH, Sum(送货表.SL) AS 收货总数 FROM 送货表 GROUP BY 送货表.CPBH, 送货表.OrderNO;
用LEFT JOIN 把订单结存数列出来
SELECT 订单查询.OrderNo, 订单查询.CPBH, 订单查询.订单总数, 收货查询.收货总数, (nz(订单查询.订单总数)-nz(收货查询.收货总数)) AS 结余订单数
FROM 订单查询 LEFT JOIN 收货查询 ON (订单查询.CPBH=收货查询.CPBH) AND (订单查询.OrderNo=收货查询.OrderNO);
出来的结果却不是我想要的
改成 INNER JOIN 方式
SELECT 订单查询.OrderNo, 订单查询.CPBH, 订单查询.订单总数, 收货查询.收货总数, (nz(订单查询.订单总数)-nz(收货查询.收货总数)) AS 结余订单数
FROM 订单查询 INNER JOIN 收货查询 ON (订单查询.OrderNo = 收货查询.OrderNO) AND (订单查询.CPBH = 收货查询.CPBH);
收货总能正常显示
改成 INNER JOIN 方式
SELECT 订单查询.OrderNo, 订单查询.CPBH, 订单查询.订单总数, 收货查询.收货总数, (nz(订单查询.订单总数)-nz(收货查询.收货总数)) AS 结余订单数
FROM 订单查询 INNER JOIN 收货查询 ON (订单查询.OrderNo = 收货查询.OrderNO) AND (订单查询.CPBH = 收货查询.CPBH);
收货总能正常显示
为什么INNER JOIN可以正常显示收货总数,而LEFT JOIN不能显示呢 ,不知大家发现问题没有
唉,弄了一个下午,总算搞清楚什么回事,LEFT JOIN 后面查询语句,如果是分组查询的,GROUP BY 的排序顺序必须和SELECT 的一致
把收货查询:
SELECT 送货表.OrderNO, 送货表.CPBH, Sum(送货表.SL) AS 收货总数 FROM 送货表 GROUP BY 送货表.CPBH, 送货表.OrderNO;
改为:
SELECT 送货表.OrderNO, 送货表.CPBH, Sum(送货表.SL) AS 收货总数 FROM 送货表 GROUP BY 送货表.OrderNO,送货表.CPBH
执行LEFT JOIN 一切正常
唉,弄了一个下午,总算搞清楚什么回事,LEFT JOIN 后面查询语句,如果是分组查询的,GROUP BY 的排序顺序必须和SELECT 的一致
把收货查询:
SELECT 送货表.OrderNO, 送货表.CPBH, Sum(送货表.SL) AS 收货总数 FROM 送货表 GROUP BY 送货表.CPBH, 送货表.OrderNO;
改为:
SELECT 送货表.OrderNO, 送货表.CPBH, Sum(送货表.SL) AS 收货总数 FROM 送货表 GROUP BY 送货表.OrderNO,送货表.CPBH
执行LEFT JOIN 一切正常
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access选项卡示例】Ac...(09.09)
- 【Access源码示例】按输入...(09.02)
- 【Access日期区间段查询】...(08.29)
- 【Access日期区间段查询】...(08.27)
- Access怎样才能实现日期时...(08.21)
- 【Access定时打开查询】A...(08.19)
- Access生成固定数量的记录...(08.13)
- Access怎样才能实现日期时...(08.12)
- Access利用导航窗体控件对...(08.03)
学习心得
最新文章
- Access表中的字段名、字段标题...(09.19)
- Access快速开发平台--更改“...(09.18)
- 【中秋及国庆优惠】Access培训...(09.15)
- Access如何将日期型的数值转换...(09.14)
- 英文输入法输入数据中存在单引号引起...(09.11)
- 【Access选项卡示例】Acce...(09.09)
- 让Access光标停留在指定的控件...(09.07)
- 关于Access查询条件里使用通配...(09.06)
- Access报表偷懒制作法--Ac...(09.05)
- Access快速开发平台--窗体数...(09.04)