我有 2 个表,第一个表是 MASTER_TABLE,其中包含字段 ID、STATUS_CODE、STATUS_SUBCODE、SUBJECT_CODE、SUBJECT_SUBCODE,第二个表是 CODE_TABLE> 它对代码和子代码的每个组合都有唯一的描述。它具有以下字段代码,子代码和描述
如何编写查询来检索 ID、STATUS 和 SUBJECT ,例如,对于 MASTER_TABLE 中 STATUS_CODE 和 STATUS_SUBCODE 的每个组合,我必须获取 STATUS 值CODE_TABLE,同样我必须对 SUBJECT 做同样的事情
最佳答案
您必须将两次连接到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
中缺少数据,在这种情况下,此查询将为相应的描述。
关于mysql - 对多于 1 列的 Oracle 查询执行 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15586162/