查询中的SQL数据表和查找表

查询中的SQL数据表和查找表,sql,linq,datatable,lookup,Sql,Linq,Datatable,Lookup,我有一个查找表,如 CategoryId Name 1 Blue 2 Red 3 Orange 我有一个数据表,比如 Id CategoryId1 CategoryId2 1 2 1 2 1 3 我想得到以下查询结果 Id

我有一个查找表,如

CategoryId          Name
1                    Blue
2                    Red
3                    Orange
我有一个数据表,比如

Id        CategoryId1       CategoryId2
1           2                1
2           1                3
我想得到以下查询结果

Id         Category1        Category2
1            Red               Blue
2            Blue              Orange

如何做到这一点?

假设
CategoryId1
CategoryId2
不能为空,简单的
内部联接就足够了

SELECT [Id]
      ,ISNULL(Desc1.Name,'')
      ,ISNULL(Desc2.Name,'')
FROM table2
LEFT OUTER JOIN table1 Desc1 on Desc1.CategoryID= table2.CategoryId1
LEFT OUTER JOIN table1 Desc2 on Desc2.CategoryID = table2.CategoryId2
SELECT t1_1.Id as Id, t1_1.Name as Category1, t1_2 as Category2
  FROM table2 t2
  INNER JOIN table1 t1_1 on t1_1.CategoryId = t2.CategoryId1
  INNER JOIN table1 t1_2 on t1_2.CategoryId = t2.CategoryId2

虽然这段代码可能会回答这个问题,但人们应该始终添加一个解释,说明为什么/如何解决这个问题