您好我需要一些关于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列。我只需要连接两个表并在单个查询中获取名称。这可能吗?在此先感谢您的帮助
答案 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中的结果。