经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
同一张表中有父子键关联进行查询
来源:cnblogs  作者:Insus.NET  时间:2019/5/20 8:50:33  对本文有异议

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

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

 

  1. CREATE TABLE [dbo].[tempTable]
  2. (
  3. [id] INT ,
  4. [parent_id] INT NULL,
  5. [itemName] NVARCHAR(40)
  6. )
  7. GO
  8.  
  9. INSERT INTO [dbo].[tempTable]
  10. (
  11. [id],
  12. [parent_id],
  13. [itemName]
  14. )
  15. VALUES
  16. (1,NULL,'a'),
  17. (2,NULL,'b'),
  18. (3,1,'c'),
  19. (4,NULL,'d'),
  20. (5,3,'e')
  21. GO
  22.  
  23. SELECT [id],[parent_id],[itemName] FROM [dbo].[tempTable]
  24. GO
Source Code

 

下面是表关联:

 

  1. SELECT
  2. ta.[id] AS [子表id],
  3. tb.[id] AS [父表id],
  4. ta.[itemName] AS [子表name],
  5. tb.[itemName] AS [父表name]
  6. FROM [dbo].[tempTable] AS ta
  7. INNER JOIN [dbo].[tempTable] AS tb ON (ta.[parent_id] = tb.[id])
  8. GO
Source Code

 

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

 

  1. CREATE TABLE [dbo].[tempTable]
  2. (
  3. [id] INT ,
  4. [parent_id] INT NULL,
  5. [itemName] NVARCHAR(40)
  6. )
  7. GO
  8.  
  9. INSERT INTO [dbo].[tempTable]
  10. (
  11. [id],
  12. [parent_id],
  13. [itemName]
  14. )
  15. VALUES
  16. (1,0,'广东省'),
  17. (2,1,'广州市'),
  18. (3,2,'增城区'),
  19. (5,3,'小池镇'),
  20. (8,5,'XX村'),
  21. (9,5,'YY村'),
  22. (10,5,'ZZ村')
  23. GO
  24.  
  25. SELECT [id],[parent_id],[itemName] FROM [dbo].[tempTable]
  26. GO
Source Code

 

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

 

  1. SELECT
  2. ta.[id] AS [A-id],
  3. ta.[itemName] AS [A-name],
  4. tb.[id] AS [B-id],
  5. tb.[itemName] AS [B-name],
  6. tc.[id] AS [C-id],
  7. tc.[itemName] AS [C-name] ,
  8. td.[id] AS [D-id],
  9. td.[itemName] AS [D-name] ,
  10. te.[id] AS [E-id],
  11. te.[itemName] AS [E-name]
  12. FROM [dbo].[tempTable] AS te
  13. INNER JOIN [dbo].[tempTable] AS td ON (te.[parent_id] = td.[id])
  14. INNER JOIN [dbo].[tempTable] AS tc ON (td.[parent_id] = tc.[id])
  15. INNER JOIN [dbo].[tempTable] AS tb ON (tc.[parent_id] = tb.[id])
  16. INNER JOIN [dbo].[tempTable] AS ta ON (tb.[parent_id] = ta.[id])
  17. GO
Source Code

 

原文链接:http://www.cnblogs.com/insus/p/10883964.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号