我有一个这样的表结构的共同祖先(其实有更多的层次):找到一个树形结构表
------------------------------------------
|region1|region2|region3|region4|postcode|
|-------|-------|-------|-------|--------|
|a |x |i | |1 |
|a |y |i | |2 |
|a |y |j | |2 |
|a |z |k | |3 |
|b |u |m | |4 |
|b | |n | |4 |
|c | | | |5 |
|c |q | | |6 |
------------------------------------------
因此,例如,a => x => i
和a => y => i
有不同的地方,但两者在相同的区域1 a
。
我想知道每个邮政编码可以覆盖哪个区域。
例如,代码2
涵盖区域a => y => i
和a => y => j
,因此这些共同的祖先是a => y
。
这里是关于例如运行查询所需的输出:
------------------------------------------
|postcode|region1|region2|region3|region4|
|--------|-------|-------|-------|-------|
|1 |a |x |i | |
|2 |a |y | | |
|3 |a |z |k | |
|4 |b | | | |
|5 |c | | | |
|6 |c |q | | |
------------------------------------------
我真的不知道如何攻击这个问题。我想通过邮编分区,但这仍然留下找到每个分区内共同的祖先的问题...
一个树状结构表是将每一行都有它的父行的引用的表。我不知道你在那里做什么,我不明白你用'a => x => i''表示的意思。另外,根据我的经验,无论何时我遇到具有名称列相似列的表仅有一个(数字或非数字)后缀的表时,某个人在某个地方不理解数据库规范化。 – 2015-02-06 15:49:18
这当然不是标准化的,我意识到这一点。我可能会这样做,但如果有解决方案,我会感兴趣。 'a => x => i'表示它是示例表中的第一行(region1 = a,region2 = x,region3 = i) – 2015-02-06 15:52:18
查看https://msdn.microsoft.com/zh-cn/ gb/library/bb677173%28v = sql.110%29.aspx – Elliveny 2015-02-06 15:54:59