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

SQL查询如何展示外键关联的类型名称而非外键ID值

实现方法

你需要通过表关联把外键对应的字典表字段拉到查询结果里,不需要改动你现有写死的日历配色、筛选逻辑,只需要补2处修改即可:

  1. 从REZERVACIJE表关联预订类型字典表,注意用左连接避免脏数据导致记录丢失
  2. 在title字段拼接的位置,直接引用字典表的类型名称字段,同时修复你原SQL里多写的一个||拼接符语法错误

注:下面示例里假设你的预订类型字典表名为REZ_TYPES,字典表主键字段为ID_REZ_TYPE,存储类型名称的字段为TYPE_NAME,你可以替换成自己实际的表名、字段名。

修改后的完整SQL如下:

select 
    r.ID_REZ, /*预订ID,插入时自增*/
    r.START_REZ, /*预订开始日期*/
    r.END_REZ, /*预订结束日期*/
    r.DETAILS_REZ, /*预订备注,VARCHAR2类型*/
    case 
        when r.DETAILS_REZ is not null 
        then r.title || '[' || r.QUANTITY_REZ || 'x ' || t.TYPE_NAME 
             || ' hours on ' || r.NUMBER_OF_HOURS || ' - ' || r.DETAILS_REZ || ' ]'
    end as title,
    r.QUANTITY_REZ, /*预订的物品/服务数量,数值类型*/
    r.NUMBER_OF_HOURS, /*预订时长(小时),自动计算数值类型*/
    case
        when r.REZ_TYPE_FK = 8 then  'apex-cal-red'
        when r.REZ_TYPE_FK = 9 then  'apex-cal-orange'
        when r.REZ_TYPE_FK = 10 then  'apex-cal-blue'
        when r.REZ_TYPE_FK = 11 then 'apex-cal-green'
        when r.REZ_TYPE_FK = 12 then 'apex-cal-lime'
    end as CSS_REZ   /*日历条目配色样式字段*/
from
    REZERVACIJE r
    -- 左连接预订类型字典表,关联条件为外键对应字典表主键
    left join REZ_TYPES t 
    on r.REZ_TYPE_FK = t.ID_REZ_TYPE
where 
    (nvl(:REZ_TYPE_OBJ,'0') = '0' or r.REZ_TYPE_FK = :REZ_TTYPE_OBJ)  /*LOV筛选预订类型逻辑保留*/
order by
    r.START_REZ
注意事项
  • 表别名r代表预订表、t代表类型字典表,加别名是为了写字段的时候更简洁,避免两个表有同名字段时报错
  • 必须用left join而不是inner join:如果存在外键为空、对应类型记录被删除的异常数据,inner join会把这些预订记录直接过滤掉,left join会保留预订记录,只是对应的类型名称显示为空,不会导致日历丢数据
  • 你原有的配色逻辑、筛选逻辑、排序逻辑全部没有改动,不会影响现有功能运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:39:25