在查找时加入的案例陈述

Case statements with Join on lookup

我有一个很大的 table,其中一些列具有查找值。我想为每个查找列创建一个描述列,并使用查找 table.

中的描述填充它们

这是一个例子

主要table

select id1, id2, id3 from idtable;
id1 id2 id3
1 2 3
1 3 4

查找table

select code, id, desc from lookup;
code id desc
id1 1 id1-desc1
id2 2 id2-desc2
id2 3 id2-desc3
id3 3 id3-desc3
id3 4 id3-desc4

我想要这样的结果集:

id1 id1desc id2 id2desc id3 id3desc
1 id1-desc1 2 id2-desc2 3 id3-desc3
1 id1-desc1 3 id2-desc3 4 id3-desc4

为此编写 SQL 解决方案的最佳和最有效的方法是什么?

您需要三个连接:

SELECT id1, l1.desc AS id1desc,
       id2, l2.desc AS id2desc,
       id3, l3.desc AS id3desc
FROM   idtable i
JOIN   lookup l1 ON id1 = l1.id
JOIN   lookup l2 ON id2 = l2.id
JOIN   lookup l2 ON id3 = l3.id