在超过1列oracle查询上执行JOIN

时间:2013-03-23 11:21:39

标签: mysql oracle oracle10g oracle11g oracle9i

我有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做同样的事情

1 个答案:

答案 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