2013-03-23 134 views
2

我有2个表,第一个是MASTER_TABLE与字段ID,STATUS_CODE,STATUS_SUBCODE,SUBJECT_CODE,SUBJECT_SUBCODE和所述第二表是CODE_TABLE其具有独特的描述对于代码和子代码的每个组合。它具有以下字段CODESUBCODE说明执行多于1列Oracle查询JOIN

如何编写一个查询检索ID,STATUSSUBJECT,例如用于在MASTER_TABLE我STATUS_CODE的每个组合和STATUS_SUBCODE要获得CODE_TABLE状态值,同样地,我必须做同样的事情,对于承受

回答

2

你必须加入两次CODE_TABLE - 一次为每个类型的查询,所以distingui SH从海誓山盟行,你必须别名至少一个(但通常人们会别名两种,如下):

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