MS Access - 使用LIKE和AND

时间:2016-10-20 16:29:21

标签: sql ms-access

目的

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

  • CUSTOMER ID
  • CUSTOMER NAME(特定于CUSTOMER ID
  • ITEM ID
  • 风格
  • 库存计数
  • 需求预测(特定于ITEM ID& CUSTOMER ID
  • 最后购买订单日期(特定于ITEM ID& CUSTOMER ID

首先,一点背景

最初,我制作的报告突出显示了特定商品(COMPANY ID)的公司(PURCHASE ORDER DATE)历史采购订单(最大值(ITEM ID))。但是,这很快就失败了,因为 new 产品也是目录的一部分(没有PURCHASE ORDER DATE的历史记录)。更糟糕的是,我们公司预测需要物品(DEMAND FORECAST),即使产品是全新的(为什么会这样,我也不知道)。

因此,CUSTOMERITEM ID无法直接相关(因为有时客户会展示新产品)。

更糟糕的是,CUSTOMER可能有多个CUSTOMER NAMES(例如" Home Depot"," HOME DEPOT ONLINE"等。 )

APPROACH

  1. 创建一个Customer IDsCustomer Names(已完成)
  2. 的表格
  3. 创建一个Item ID及其Inventory(已完成)
  4. 的表格
  5. 创建一个最大(Purchase orders)表(最新采购订单),包括Customer IDsItem IDs(已完成)
  6. 根据Demand ForecastsCustomer ID(已完成)
  7. 创建一个Item ID表格
  8. 创建一个中间表," Active Catalog"将Customer NameItem ID相关联,具体取决于我们是否要展示某些新产品/现有产品(不完整)
  9. 链接" Active Catalog"表到"采购订单表"和#34;预测表",基于ITEM ID LIKE CUSTOMER NAME(因为1个客户可以有多个名称变体)。
  10. 注意:重申一下,我必须采取步骤#3和#4的原因是公司可以有采购订单,但没有预测;或预测,但没有每个项目的先前采购订单。因此,需要步骤#5来巩固Company IDItem之间的链接,并且步骤#6增加了复杂性,因为我们的数据库搞砸了......

    例证 Currently in MS Access

    CODE

    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 AND 的表格CUSTOMER NAME 的相对可能性,因为如上所述,1 { {1}}有多个但相似CUSTOMER ID(例如HOMEDEPOT,HOMEDEPOT ONLINE)。但是,我的代码似乎不正确。请参阅上面的代码中的CUSTOMER NAMES

2 个答案:

答案 0 :(得分:0)

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

请参阅here

答案 1 :(得分:0)

随访:

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

此外,我创建了一个包含MsgBox提示的单独查询,使用户可以通过this tutorial

来搜索LIKE条件