我有2个表,第一个是 MASTER_TABLE ,字段为 ID,STATUS_CODE,STATUS_SUBCODE,SUBJECT_CODE,SUBJECT_SUBCODE ,第二个表为 CODE_TABLE 对代码和子代码的每个组合都有唯一的描述。它包含以下字段 CODE , SUBCODE 和说明
如何编写查询以检索 ID,STATUS 和 SUBJECT ,例如对于MASTER_TABLE中的STATUS_CODE和STATUS_SUBCODE的每个组合,我必须获取STATUS值CODE_TABLE,同样我必须为SUBJECT做同样的事情
答案 0 :(得分:2)
您必须将两次加入CODE_TABLE
- 每种类型的查找一次,所以为了区分行彼此,您必须别名至少一个(但通常一个别名两者,如下所示):
select
mt.ID,
ct1.DESCRIPTION as STATUS
ct2.DESCRIPTION as SUBJECT
from MASTER_TABLE mt
left join CODE_TABLE ct1
on ct1.CODE = mt.STATUS_CODE and ct1.SUBCODE = mt.STATUS_SUBCODE
left join CODE_TABLE ct2
on ct2.CODE = mt.SUBJECT_CODE and ct2.SUBCODE = mt.SUBJECT_SUBCODE
如果left
中缺少数据,我已加入CODE_TABLE
联接,在这种情况下,此查询会为相应的说明生成null
。