如何基于ID连接两个表并获取信息

时间:2014-04-24 07:46:13

标签: sql vb.net datagridview

您好我需要一些关于SQL查询的帮助。

表A

ID      Name     Type 
--------------------- 
1        abc     BC 
--------------------- 
2        def     SD  
---------------------
3        ghi     BC  
----------------------

表B(BC_ID和SD_ID是表'B'的外键,引用表'A'的主键'ID')

ID     BC_ID    SD_ID
---------------------  
1        1        2  
--------------------- 
2        3        2  
--------------------- 

我正在使用VB.Net datagrid视图来打印表B的详细信息。我需要在datagridview中再打印2列,指定相应BC_ID和SD_ID的名称。 如何编写一个SQL查询,它可以从数据库中获取相应ID的“名称”并在datagridview中打印...

datagridview中的预期输出:

ID    BC_Name   SD_Name
---------------------   
1       abc        def  
--------------------- 
2       ghi        def   
--------------------- 

我不希望在表B中有单独的BC_Name和SD_Name列。我只需要连接两个表并在单个查询中获取名称。这可能吗?在此先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您需要使用不同的别名连接TableA两次。

试试这个:

SELECT B.ID,ISNULL(A1.NAME,'') as BC_NAME,ISNULL(A2.NAME,'') as SD_NAME
FROM TableB B LEFT JOIN
TableA A1 ON A1.ID=B.BC_ID LEFT JOIN
TableA A2 ON A2.ID=B.SD_ID

结果:

ID  BC_NAME  SD_NAME
1   abc      def
2   ghi      def

请参阅SQL Fiddle中的结果。