求助!!!数据库连接查询,多个表存在多父一子情况,鄙人能力有限还未找到好的方法,求教大神帮助,不胜感激。。。

aaaa1185164 2016-01-14 07:56:32
最近在做东西,在数据库连接查询的时候出现了一点问题,一个父表中多个字段对应子表中一个字段,我需要能根据子表查到相关父表,根据父表也能查到相应子表;
举个例子,我把表格内容简化了一下表格A,作为父表如图
表格B是个子表
表格C是表格B下面的子表
表格B中项目,1001,1002,1003,都是表格A中项目1001的一部分,表格B中1100,1101都是表格A中项目1100的一部分;
表格C中1010,是由表格B中1002,1003的一部分共同组成的,

我想要实现的查询A中1001可以查的其子表B中1001,1002,1003,查询B中的1002可查到其父表A中的1001;
同时查询B表中1002或是1003可以查到C表中1010,查询C表中1010可以查到B表中1002,1003;
经过一段时间的学习,我发现,如果A,B两个只是单纯的一父多子,通过父表中引入一个唯一标识的字段,可以实现父查子和子查父;但是当遇到B和C之间一子多父的情况,在父子之间互相查询的时候实现不了,,,特别是当A,B,C,形成多级父子关系,,

想了一些办法,无法解决,求教大神如何可以实现,,,,,,
...全文
203 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaaa1185164 2016-01-16
  • 打赏
  • 举报
回复
引用 7 楼 Happiday 的回复:
根据楼主所述,我理解是 这个应该能看明白把,A表中AID,B表中AID,BID;A与B通过AID连接,,同理,,形成了A——B——C——D,D——C——B——A,这种查询,,,
额,我实践一下,,谢谢了
aaaa1185164 2016-01-15
  • 打赏
  • 举报
回复
ABC关系进一步清晰一下
声明一下,项目其中的1001,1002,1010,1100。。。。。。等等,都只是用来区分一个表格中不同项目记录的,,,在父子查询才时候不一定要用它建立联系,,,,
Happiday 2016-01-15
  • 打赏
  • 举报
回复
根据楼主所述,我理解是
这个应该能看明白把,A表中AID,B表中AID,BID;A与B通过AID连接,,同理,,形成了A——B——C——D,D——C——B——A,这种查询,,,
Tiger_Zhao 2016-01-15
  • 打赏
  • 举报
回复
A、C都是主表,B是AC的多对多关系表。
比如衣服的规格
A(颜色)


绿

C(尺寸)
S
M
L
XL

B(颜色,尺寸)
红,M
红,L
黄,L
黄,XL

B作为关系表,即可以看成A的子表,也可以看成C的子表。
LongRui888 2016-01-15
  • 打赏
  • 举报
回复
主表和子表的对应关系,是需要有关联字段的,没有关联字段,没办法关联,就没办法从子表查询到主表了 应该是这样: 主表 id 子表 cid id 两个通过id来关联
xdashewan 2016-01-15
  • 打赏
  • 举报
回复
没有任何规律可言的查询,建议你还是建立一张关联表比较方便
sysplay 2016-01-14
  • 打赏
  • 举报
回复
真心不知道你举的例子是否和你实际需求相符合。 从你个的例子,能够提取到一个父子关系是A与B的关系是A的项目与B的项目前两位相同,B与C的关系是C的项目大于B项目的最小的10的倍数。 问题一:ABC之间的关系,没有描述清楚
Select *
From A Inner Join B
On C.项目-B.项目>0 And C.项目-B.项目<10
Where B.项目=1001
实现已知B,查C。将Where条件改成C.项目=1001,可以实现已知B,查C。
Select *
From B Inner Join C
On B.项目/100=B.项目/100 
Where B.项目=1001
实现已知B,查A。将Where条件改成A.项目=1001,可以实现已知A,查B。
Ginnnnnnnn 2016-01-14
  • 打赏
  • 举报
回复
被你搞得好晕。未能明白你的意思,可能的话举出详细点的数据样例和期望结果

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧