Access交流中心

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

一个查询问题

chinasa  发表于:2014-12-19 13:34:08  
复制

请教一个查询问题:我有两张表,一张是“盘存”,另一张是“订单”,我需要核对订单中的货号对应的尺码是否在盘存中存在,如果存在是否显示无货?最后的结果如下:

AAAA1  A001  S  有货

AAAA2  A001  L  无货

AAAA3  A001  XL  有货

BBB1    A0007  S   无此货号

 

 

�������ش˸���

 

 

Top
chinasa 发表于:2014-12-19 13:43:30
我现在的方案是以货号建立关系,把两张表放到一个查询中,然后通过IIF函数逐个尺码判断。这个方法能够实现,但总感觉不太好,如果货号很多,则IIF函数要套很多个。不知道是否有其它办法?

西出阳关无故人 发表于:2014-12-19 17:23:11

盘存表应该是这样(也可以用查询把现有表变成):

ID    货号     尺码     库存数量

 

然后用左/右连接查询即可

连接要用两个字段:货号 & 尺码



西出阳关无故人 发表于:2014-12-19 17:35:17

实现的一种形式

盘存表变形查询:

SELECT 盘存.货号,'S' AS 尺码, 盘存.S FROM 盘存
union SELECT 盘存.货号,'M' AS 尺码,  盘存.M FROM 盘存
union SELECT 盘存.货号,'L' AS 尺码,  盘存.L FROM 盘存
UNION SELECT 盘存.货号,'XL' AS 尺码,  盘存.XL FROM 盘存

结果查询:

SELECT 订单.ID, 订单.编号, 订单.货号, 订单.尺码, 订单.数量, 盘存表变形.S as 库存情况
FROM 订单 INNER JOIN 盘存表变形 ON (订单.货号 = 盘存表变形.货号) AND (订单.尺码 = 盘存表变形.尺码)
UNION SELECT 订单.ID, 订单.编号, 订单.货号, 订单.尺码, 订单.数量, "无此货号" AS 表达式1
FROM 订单 LEFT JOIN 盘存表变形 ON (订单.货号 = 盘存表变形.货号) AND (订单.尺码 = 盘存表变形.尺码)
WHERE (((盘存表变形.货号) Is Null) AND ((盘存表变形.尺码) Is Null))

 



chinasa 发表于:2014-12-20 12:59:25
万分感谢。看来联合查询语句我欠缺很多啊。

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