【问题标题】:Access: Cartesian product within a row访问:连续笛卡尔积
【发布时间】:2018-11-05 17:12:41
【问题描述】:

我正在使用包含父母及其子女的表格(称为 Table1)运行 Access 2016。父母在第一列中列出,他们的孩子在第二到第四列中显示,所有孩子都对应于同一行的父母。但是,每个父母的孩子数量各不相同,因此较高列号中的一些单元格是空白的:

Parent     Children1  Children2  Children3  Children4  Children5  
  A            A1         A2         A3         A4         A5
  B            B1         B2         --         --         --
  C            C1         C2         C3         --         --    

有没有办法编写一个查询,将该表转换为每个子项分别对其父项的直接分配?我需要输出看起来像这样(空白单元格应被忽略):

Parent     Children  
  A            A1    
  A            A2                              
  A            A3       
  A            A4      
  A            A5   
  B            B1 
  B            B2           
  C            C1   
  C            C2  
  C            C3  

从技术上讲,这应该类似于 table1 中所有列的笛卡尔积,但只是在每个父级的行内。我搜索了 cartesian producttransposetransform 的访问函数方向,但找不到合适的示例。

谢谢

【问题讨论】:

  • 利用这个机会将您的 Table1 结构从“Parent,Children1,Children2,ChildrenN”(每个父 ID 一行)解析为“Parent,Child”(每个父 ID 多行)一次全部。当前的表格布局没有用,您会因此而头疼。

标签: sql ms-access-2016


【解决方案1】:

你可以使用union all:

select parent, children1 as child from t where children1 is not null
union all
select parent, children2 as child from t where children2 is not null
union all
select parent, children3 as child from t where children3 is not null
union all
select parent, children4 as child from t where children4 is not null
union all
select parent, children5 as child from t where children5 is not null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 2013-07-14
    • 2015-07-13
    • 2016-10-08
    相关资源
    最近更新 更多