在一行中显示一对多关系

Chr*_*idt 5 ms-access

我在两个表中有“一对多”关系:

Table "products" contains: product_id, product_descr
Table "packing" contains: product_id, package_id, package_desc
Run Code Online (Sandbox Code Playgroud)

一种产品通常有多个包装。我想在 Microsoft Access 中创建一个查询,在其中我在一行中获取一个产品的所有包选项:

product_id package_id1 package_desc1 packageid2 package_desc2 packageid_n package desc_n
Run Code Online (Sandbox Code Playgroud)

产品确实有不同数量的包装,它不是一个固定的数量。

Shi*_*iva 1

我可以通过三个步骤来实现您的查询。假设您的表值类似于下面列出的值:

在此输入图像描述

  • 步骤1:在SQL视图中粘贴此查询并将其保存为part1,这是为了package_id转置

    TRANSFORM First([packing].package_id)
    SELECT [packing].[product_id]
    FROM packing
    GROUP BY [packing].[product_id]
    PIVOT [packing].package_id;
    
    Run Code Online (Sandbox Code Playgroud)
  • 步骤2:在SQL视图中粘贴此查询并将其另存为part2,这是为了package_desc转置

    TRANSFORM First(packing.package_desc)
    SELECT packing.product_id
    FROM packing
    GROUP BY packing.product_id
    PIVOT packing.package_id;
    
    Run Code Online (Sandbox Code Playgroud)
  • 第 3 步:根据上面的两个查询连接product_id以获得结果