【问题标题】:SQL x-ref query to return a single row of a variable number of recordsSQL x-ref 查询返回可变数量记录的单行
【发布时间】:2011-12-07 21:30:48
【问题描述】:

我有一张parents 的表格(表格中有真正的父母姓名),一张children 的表格(这些是父母的孩子,名字和姓氏)和一个x-ref 表格:外部参照-id, parent-id 和 child-id。

外部参照表用于容纳妈妈/爸爸组合可能拥有的可变数量的孩子。

我需要一个查询来返回一行父母和孩子的姓名。我面临的问题是有些父母有 1 个孩子,有些父母有 1 个以上的孩子。

我很困惑......

TLB_PARENT:
p_id, momfname, dadfname

TLB_CHILD:
c_id, childfname, childlname

TLB_XREF
xref_id, p_id, c_id

非常感谢任何帮助!

【问题讨论】:

  • 为什么你想要/需要一个完全非规范化你拥有的完美规范化结构的查询?
  • 检查这个问题和答案:stackoverflow.com/questions/451415/…
  • 或者这个(对于不同的方法,使用 PIVOT 并为 10 个子名称生成 10 列 - 带有一些 NULL):stackoverflow.com/questions/198716/pivot-in-sql-2005
  • 通过使用外部表来链接孩子和父母,您可以让孩子属于一对以上的父母。我认为您应该将p_id 引用直接放入TBL_CHILD 表中。

标签: sql sql-server-2005 select


【解决方案1】:

culmns 的数量是一个 SQL 查询不是动态的,它是非常固定的。

您可以得到的最接近的方法是确定最大儿童数量。然后,您将在许多单元格中出现空白,但更重要的是,表格可能会被填满并且某些子项不会显示。

如何执行此操作取决于您拥有的 SQL 版本。


另外,请注意,您可以在现实生活中遇到这种情况......

  • WomanA 和 ManA 有 ChildA
  • WomanA 和 ManB 有 ChildB
  • WomanB 和 ManB 有 ChildC
  • WomanB 和 ManA 有 ChildD

虽然那是一个有点混乱的世界,但我知道一些非常混乱的家庭。我只是指出,您的简化可能会在任何体面的现实世界人口中出现问题。

【讨论】:

  • 感谢您的回复,在这个项目中,每对夫妇最多允许 10 个孩子。此外,我们控制组合,因为它将是严格的男人/女人-A 有 child1、child2、childn(最多 10 个)。
  • 什么版本的 SQL? (希望别人能给你举个例子,我现在要下班了。周末愉快)
  • 我们使用的是 Microsoft SQL Server 2005。 - 再次感谢您的任何回复!
猜你喜欢
  • 2016-05-15
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 2014-02-24
  • 2013-03-01
相关资源
最近更新 更多