SQL - 1 个父表,2 个子表 - 为子表中的每一行返回单行
表 A
- ParentID
- 名称
表 B
- BKey
- ParentID
- DESB
表 C
- CKey
- ParentID
- DESC
我需要为 B/ 中的每个组合数据行返回 1 行与父 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
是否有办法在不需要联合的情况下执行此操作?
Table A
- ParentID
- Name
Table B
- BKey
- ParentID
- DescB
Table C
- CKey
- ParentID
- DescC
I need to return 1 row for each combined row of data in B/A that match the parent id and if one of the child tables has more rows than the other, a row should be returned with nulls for that description.
For example, if the data was as following
Table A
1 FirstParent
2 Second Parent
Table B
1 1 BDesc1
2 1 BDesc2
3 2 P2BDesc1
Table C
1 1 CDesc1
2 2 P2CDesc1
3 2 P2CDesc2
If I retrieve based on FirstParent
, the results should be:
1 FirstParent BDesc1 CDesc1
1 FirstParent BDesc2 NULL
If I retrieve based on SecondParent
, the results should be:
2 SecondParent P2BDesc1 P2CDesc1
2 SecondParent NULL P2CDesc2
Is there anyway of doing this without having to unions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在这里试试:https://data.stackexchange.com/stackoverflow/qt/112538/
编辑:使用ExternalKey查询多个ParentID的版本
建议索引:
我将创建一个表变量来保存与ExternalKey匹配的ParentID,然后使用代替查询中的 TableA。
Try here: https://data.stackexchange.com/stackoverflow/qt/112538/
Edit: A version using ExternalKey to query multiple ParentID's
Suggested indexes:
I would create a table variable that holds the ParentID's that matches the ExternalKey and then use that instead of TableA in the query.
我真的希望这是 MSSQL 问题
在这里尝试:
https://data.stackexchange.com/stackoverflow/q/112537/
I truely hope this is MSSQL question
Try here:
https://data.stackexchange.com/stackoverflow/q/112537/
您可以分两步实现:
1)计算每个子表中的记录数。
2)根据第一步中的记录数连接第一个或第二个表
You can implement it in 2 steps:
1) Calculate number of records in every child tables.
2) Join 1st or 2nd table regarding to number of records from 1st step