表ASQL - 1个父表,2个表 - 每个行中的子表中返回一行
- PARENTID
- 名称
表B
- BKey
- PARENTID
- DescB
表C
- CKEY
- PARENTID
- DescC
我需要返回1行进行数据的每个组合排在B/A tha t匹配父ID,并且如果其中一个子表的行数多于另一个,则应为该描述使用空值返回一行。
例如,如果该数据是如下
表A
1 FirstParent
2 Second Parent
表B
1 1 BDesc1
2 1 BDesc2
3 2 P2BDesc1
表C
1 1 CDesc1
2 2 P2CDesc1
3 2 P2CDesc2
如果我找回基于FirstParent
,结果应该是:
1 FirstParent BDesc1 CDesc1
1 FirstParent BDesc2 NULL
如果我找回基于SecondParent
,结果应该是:
2 SecondParent P2BDesc1 P2CDesc1
2 SecondParent NULL P2CDesc2
反正有这样做没有的有工会吗?
我们有不同的方式来理解问题,您的解决方案是完全有效的。 +1。我认为整个结果应该结合起来而不使用工会。但它也可能是OP希望每个A.parentID在没有联合的情况下被检索的子结果。 –
这回答了我问的问题。所以,我会标记它的答案。不过,我确实简化了一下。另外在父表上a是一个ExternalKey列,我通常会通过外部键来获取,因此它必须根据externalkey检索具有多个parentid的结果集,并且在更改示例时引用表a中的parentid时遇到问题。 – leifre
@leifre - 修改@ t-clausen.dk提供的答案会更容易,以适应您的要求。只需在主查询中添加一个where子句即可。 '哪里a.ExternalKey = SomeValue'。 –