java 关联表查询,同一张表中有父子键关联进行查询

刚有网友提问,只有一张表,其中有子键与父键关联,怎样根扰子键查询到父键记录的数据?

Insus.NET尝试写了一个简单的例子,希望能看得懂。

78d85ffd9394629a01f6e6a94310bd4a.png

e4b182c9d127d5c8c91ce19f15983e6f.gif

160daf23be99808c5f4cf003b53b2e6d.gif

CREATE TABLE [dbo].[tempTable]

(

[id] INT ,

[parent_id] INT NULL,

[itemName] NVARCHAR(40)

)

GO

INSERT INTO [dbo].[tempTable]

(

[id],

[parent_id],

[itemName]

)

VALUES

(1,NULL,'a'),

(2,NULL,'b'),

(3,1,'c'),

(4,NULL,'d'),

(5,3,'e')

GO

SELECT [id],[parent_id],[itemName] FROM [dbo].[tempTable]

GO

Source Code

下面是表关联:

44d0099271ba29e6dc1357b7ac6d8074.png

df9ff29e17609fd33268751b43b840d3.gif

8395fbddefb0c7216b4e7b78a5e0b84f.gif

SELECT

ta.[id] AS [子表id],

tb.[id] AS [父表id],

ta.[itemName] AS [子表name],

tb.[itemName] AS [父表name]

FROM [dbo].[tempTable] AS ta

INNER JOIN [dbo].[tempTable] AS tb ON (ta.[parent_id] = tb.[id])

GO

Source Code

后来网友提供数据,数据如下:

2c64e574e70dd6e7a9a41d5da9f873a2.png

f58fab96d9d048aee9d9e83f77877847.gif

7979ab3e87a0389684ca3d74c0e144b5.gif

CREATE TABLE [dbo].[tempTable]

(

[id] INT ,

[parent_id] INT NULL,

[itemName] NVARCHAR(40)

)

GO

INSERT INTO [dbo].[tempTable]

(

[id],

[parent_id],

[itemName]

)

VALUES

(1,0,'广东省'),

(2,1,'广州市'),

(3,2,'增城区'),

(5,3,'小池镇'),

(8,5,'XX村'),

(9,5,'YY村'),

(10,5,'ZZ村')

GO

SELECT [id],[parent_id],[itemName] FROM [dbo].[tempTable]

GO

Source Code

Insus.NET写的关联语句及查询语句:

cde577edd872e4323472fc22cbc2d72b.png

588e706df74fa2d7a7e564161d02e4b5.gif

ce0a54a7e099f5d90e32b4932cff7e80.gif

SELECT

ta.[id] AS [A-id],

ta.[itemName] AS [A-name],

tb.[id] AS [B-id],

tb.[itemName] AS [B-name],

tc.[id] AS [C-id],

tc.[itemName] AS [C-name] ,

td.[id] AS [D-id],

td.[itemName] AS [D-name] ,

te.[id] AS [E-id],

te.[itemName] AS [E-name]

FROM [dbo].[tempTable] AS te

INNER JOIN [dbo].[tempTable] AS td ON (te.[parent_id] = td.[id])

INNER JOIN [dbo].[tempTable] AS tc ON (td.[parent_id] = tc.[id])

INNER JOIN [dbo].[tempTable] AS tb ON (tc.[parent_id] = tb.[id])

INNER JOIN [dbo].[tempTable] AS ta ON (tb.[parent_id] = ta.[id])

GO

Source Code

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[同一张表中有父子键关联进行查询]http://www.zyiz.net/tech/detail-111931.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值