设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2080|回复: 5
打印 上一主题 下一主题

[查询] 多条件更新查询

[复制链接]
跳转到指定楼层
1#
发表于 2012-1-12 14:07:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我的例子里的更新查询Update top ten vendor_2,目的是想找出FOB排名前十位的supplier然后更新表supplier里面的字段Supplier type为top ten vendor。
但是现在用的方法写的sql语句很长。而且每个月做报告的时候排前十的supplier可能会改变。这样的话就要手动去更改Update top ten vendor_2 里面条件。
我做了一个查询Top ten vendor FOB Sum是找出FOB前十名的supplier的名单。

请问能否在更新查询Update top ten vendor_2的代码里面改写,让更新查询去判断表里的supplier是否存在于查询Top ten vendor FOB Sum中。如果存在,则进行更新。这样,每次前十名变动了就不用手动更改条件,减少出错的机会。
以下是更新查询的sql语句。

UPDATE Suppliers SET Suppliers.[Supplier type] = iif(Suppliers.[Supplier Name]="Mayumi's","Top ten vendor",iif(Suppliers.[Supplier Name]="Leka Trading","Top ten vendor",iif(Suppliers.[Supplier Name]="Formaggi Fortini s.r.l.","Top ten vendor",iif(Suppliers.[Supplier Name]="Refrescos Americanas LTDA","Top ten vendor",iif(Suppliers.[Supplier Name]="Pavlova, Ltd.","Top ten vendor",iif(Suppliers.[Supplier Name]="Ma Maison","Top ten vendor",iif(Suppliers.[Supplier Name]="Lyngbysild","Top ten vendor",iif(Suppliers.[Supplier Name]="Escargots Nouveaux","Top ten vendor",iif(Suppliers.[Supplier Name]="New England Seafood Cannery","Top ten vendor",iif(Suppliers.[Supplier Name]="Heli Süßwaren GmbH & Co. KG","Top ten vendor",Suppliers.[Supplier Name]))))))))))
WHERE Suppliers.[Supplier Name]="Mayumi's" or Suppliers.[Supplier Name]="Leka Trading" or Suppliers.[Supplier Name]="Formaggi Fortini s.r.l." or Suppliers.[Supplier Name]="Refrescos Americanas LTDA" or Suppliers.[Supplier Name]="Pavlova, Ltd." or Suppliers.[Supplier Name]="Ma Maison" or Suppliers.[Supplier Name]="Lyngbysild" or Suppliers.[Supplier Name]="Escargots Nouveaux" or Suppliers.[Supplier Name]="New England Seafood Cannery" or Suppliers.[Supplier Name]="Heli Süßwaren GmbH & Co. KG";



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
6#
 楼主| 发表于 2012-1-13 10:35:28 | 只看该作者
roych 发表于 2012-1-12 17:48
把条件改下:
In (select top 10 [supplier name] from [Top ten vendor FOB Sum])

之前没有看到你的附件。现在解决了。谢谢,真是高手。学到不少。
5#
发表于 2012-1-12 17:48:00 | 只看该作者
把条件改下:
In (select top 10 [supplier name] from [Top ten vendor FOB Sum])
4#
 楼主| 发表于 2012-1-12 17:41:38 | 只看该作者
roych 发表于 2012-1-12 17:31
太复杂了……用子查询更新试试看?
UPDATE Suppliers SET Suppliers.[Supplier type] = "Top ten vendor"
...

用你的方法出来的结果是更新了Suppliers FOB Sum查询里面supplier按名字从a开始排序的前十个。而不是更新FOB排名前十的supplier。
3#
发表于 2012-1-12 17:31:34 | 只看该作者
本帖最后由 roych 于 2012-1-12 17:36 编辑

太复杂了……用子查询更新试试看?
UPDATE Suppliers SET Suppliers.[Supplier type] = "Top ten vendor"
WHERE (((Suppliers.[Supplier Name]) In (select top 10 [supplier name] from [Suppliers FOB Sum])));
里面写了一个宏,每次需要更新时执行即可。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
2#
发表于 2012-1-12 17:27:00 | 只看该作者
iif(Suppliers.[Supplier Name] in ("Mayumi's","Leka Trading","Formaggi Fortini s.r.l."),"Top ten vendor",Suppliers.[Supplier Name])
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-2-22 22:45 , Processed in 0.094399 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表