繁体   English   中英

MS Access-使用LIKE和AND加入

[英]MS Access - JOIN using LIKE and AND

目的

制定销售报告,输出产品目录以展示新产品/现有产品。 报告详细信息包括:

  • 顾客ID
  • 客户名称(特定于CUSTOMER ID
  • 项目编号
  • 样式
  • 库存盘点
  • 需求预测(特定于ITEM IDCUSTOMER ID
  • 上次订购日期(特定于ITEM IDCUSTOMER ID

首先,一点背景

最初,我开发了一些报告,重点介绍了公司( COMPANY ID )的特定项目( ITEM ID )的历史采购订单(最大( PURCHASE ORDER DATE ))。 但是,由于产品也属于目录(没有PURCHASE ORDER DATE历史记录),因此很快失败了。 更糟糕的是,即使产品是全新的,我们公司DEMAND FORECAST对物品的需求( DEMAND FORECAST )(为什么这样,我不知道)。

结果, CUSTOMERITEM ID无法直接关联(因为有时客户会显示新产品)。

更糟的是,一个CUSTOMER可能有多个CUSTOMER NAMES (例如“ Home Depot”,“ HOME DEPOT ONLINE”等)


方法

  1. 创建Customer IDs表格, Customer Names (已完成)
  2. 创建一个Item ID及其Inventory (已完成)
  3. 创建一个max( Purchase orders )(最新的采购订单)表,包括Customer IDsItem IDs (已完成)
  4. 根据Customer IDItem ID创建一个Demand Forecasts表(已完成)
  5. 根据我们是否要展示某些新/现有产品(不完整),创建一个中间表“ Active Catalog”,该表将“ Customer Name ”链接到“ Item ID
  6. 根据ITEM ID喜欢的 CUSTOMER NAME ,将“活动目录”表链接到“采购订单表”和“预测表”(因为1个客户可以使用一个名称的多个变体)。

注意:重申一下,之所以必须执行第3步和第4步,是因为一个公司可以有一个采购订单,但是没有任何预测; 或预测,但没有每个项目的先前采购订单。 结果,需要步骤5来巩固Company IDItem之间的链接,而步骤6则增加了复杂性,因为我们的数据库搞砸了。


插图 目前在MS Access中


SELECT 
  [Active Catalog].[CUSTOMER NAME], 
  [Table - Item and Company Forecasted Sales].[COMPANY ID], 
  [Table - Item and Company Forecasted Sales].ITEM, 
  [Table - Item and Company Forecasted Sales].STYLE, 
  [Table - Item and Company Forecasted Sales].DESCRIPTION, 
  [Table - Item and Company Historic Sales].PRICE, 
  [Table - Item and Company Forecasted Sales].[ON-HAND QTY], 
  [Table - Item and Company Forecasted Sales].[FORECAST QTY], 
  [Table - Item and Company Historic Sales].[LATEST PO DATE] 
INTO [Table - Summary]

FROM ([Active Catalog] 
  INNER JOIN [Table - Item and Company Forecasted Sales] 
      ON ([Active Catalog].STYLE = [Table - Item and Company Forecasted Sales].STYLE) 
      AND ([Active Catalog].[CUSTOMER NAME] LIKE '%' + [Table - Item and Company Forecasted Sales].[CUSTOMER NAME] + '%')) 
  INNER JOIN [Table - Item and Company Historic Sales] 
      ON ([Active Catalog].STYLE = [Table - Item and Company Historic Sales].STYLE) 
      AND ([Active Catalog].[CUSTOMER NAME] LIKE '%' + [Table - Item and Company Historic Sales].[CUSTOMER NAME] +'%')

GROUP BY 
  [Active Catalog].[CUSTOMER NAME], 
  [Table - Item and Company Forecasted Sales].[COMPANY ID], 
  [Table - Item and Company Forecasted Sales].ITEM, 
  [Table - Item and Company Forecasted Sales].STYLE, 
  [Table - Item and Company Forecasted Sales].DESCRIPTION, 
  [Table - Item and Company Historic Sales].PRICE, 
  [Table - Item and Company Forecasted Sales].[ON-HAND QTY], 
  [Table - Item and Company Forecasted Sales].[FORECAST QTY], 
  [Table - Item and Company Historic Sales].[LATEST PO DATE];

问题

  1. 我想根据ITEM ID CUSTOMER NAME的相对可能性加入一个表,因为如上所述,1个CUSTOMER ID具有多个但相似的CUSTOMER NAMES (例如HOMEDEPOT,HOMEDEPOT ONLINE)。 但是,我的代码似乎不正确。 参见: ... LIKE '%' + [Table - Item and Company Forecasted Sales].[CUSTOMER NAME] + '%'))

也许问题可能是由于使用了LIKE通配符。 尝试用*代替%。

这里

跟进:

我创建了一个“有效产品”表来显示新产品/现有产品。

此外,我创建了一个单独的查询,该查询具有MsgBox提示符,使用户可以通过遵循本教程来搜索LIKE术语

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM