You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle两表左连接时关联第三表取值的SQL构造方法

解决方案:关联elc_statuses表获取工单状态名称

要将视图中wo_status的外键值替换为对应的状态名称/描述,只需在现有左连接逻辑基础上新增与elc_statuses表的关联,无需复杂子查询。以下是修改后的完整Oracle SQL代码:

CREATE OR REPLACE VIEW VW_EQ_HISTORY (
    id,
    tag,
    original_wo,
    wo_status, -- 保留原字段名,实际返回状态显示值
    wo_task_code,
    wo_task_name,
    -- 其他字段...
)
AS
SELECT
    a.wmm_eqhist_id id,
    b.wmt_tag_name tag,
    c.wmm_wo_code original_wo,
    s.status_name wo_status, -- 替换为状态表中的名称字段
    d.wmm_wotask_id wo_task_code, -- 修正原代码拼写错误(wo_taske_code)
    d.wmm_wotask_name wo_task_name, -- 建议替换为实际任务名字段,而非ID
    -- 其他字段...
FROM WMM_EQUIPHISTORY a
LEFT JOIN wmt_tag b ON a.wmt_tag_id = b.wmt_tag_id
LEFT JOIN wmm_workorder c ON a.wmm_wo_id = c.wmm_wo_id
LEFT JOIN elc_statuses s ON c.elc_status_id = s.elc_status_id -- 新增状态表左连接
LEFT JOIN wmm_woitem d ON a.wmm_woitem_id = d.wmm_woitem_id
-- 其他关联表...
WHERE a.wmm_eqhist_createddate >= TO_DATE('01/JAN/2013', 'dd/mon/yyyy') 
WITH READ ONLY
CONSTRAINT vw_eq_history
/

GRANT SELECT ON vw_eq_history TO pbiuser;

关键修改说明:

  • 新增左连接:通过LEFT JOIN elc_statuses s ON c.elc_status_id = s.elc_status_id关联状态表,确保即使工单无状态ID时,视图仍能正常返回数据(符合左连接的非强制匹配特性)。
  • 替换字段值:将原查询中的c.elc_status_id wo_status替换为s.status_name wo_status,请根据elc_statuses表的实际字段调整(例如状态描述可能存于status_desc字段)。
  • 修正细节问题:原代码中wo_taske_code为拼写错误,改为wo_task_code;同时建议将wo_task_name对应的d.wmm_wotask_id替换为实际任务名称字段,避免返回ID而非业务名称。

内容的提问来源于stack exchange,提问作者Sigur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:52:27