Oracle SQL 获取第三个表的参考
Posted
技术标签:
【中文标题】Oracle SQL 获取第三个表的参考【英文标题】:Oracle SQL Get Reference of third table 【发布时间】:2020-04-14 08:27:38 【问题描述】:我有一个包含 3 个表的数据库:
PM_FLX_ENTE PM_ST PM_ANO_SP我想获得PM_ANO_SP.L_ANO_SP
的某些PM_ANO_L.L_ANO
值,其中包含带有/
的代码号。
SELECT COUNT(RF_INTRN),TRIM(pm_st.c_st),TRIM(pm_ano_l.L_ANO)
FROM PM_FLX_ENTE
INNER JOIN PM_ST ON PM_FLX_ENTE.C_ST = PM_ST.C_ST
INNER JOIN PM_ANO_L ON PM_FLX_ENTE.C_ANO = pm_ano_l.c_ano
WHERE pm_flx_ente.C_ANO <> '0000'
AND pm_ano_l.c_lang = 'FR'
group by TRIM(pm_st.c_st), TRIM(pm_ano_l.L_ANO)
ORDER BY COUNT(RF_INTRN) DESC
你能帮帮我吗
【问题讨论】:
【参考方案1】:这有点矫枉过正,但如果它只是你的PM_ANO_SP
中的 ID,那么直接加入并使用你得到的东西是一种方法:
SELECT
COUNT(RF_INTRN),
TRIM(NVL(PM_ANO_SP.L_ANO_SP, pm_st.c_st)), -- If found in PM_ANO_SP, use it
TRIM(pm_ano_l.L_ANO)
FROM PM_FLX_ENTE
INNER JOIN PM_ST
ON PM_FLX_ENTE.C_ST = PM_ST.C_ST
INNER JOIN PM_ANO_L
ON PM_FLX_ENTE.C_ANO = PM_ANO_L.C_ANO
LEFT JOIN PM_ANO_SP
ON PM_ST.C_ST = PM_ANO_SP.C_ST -- < Don't know the name
WHERE
pm_flx_ente.C_ANO <> '0000'
AND pm_ano_l.c_lang = 'FR'
GROUP BY TRIM(pm_st.c_st), TRIM(pm_ano_l.L_ANO)
ORDER BY COUNT(RF_INTRN) DESC
【讨论】:
我绝对愿意,非常感谢!【参考方案2】:一种选择是在WHERE
子句中添加另一个条件:
and instr(PM_ANO_L.L_ANO, '/') > 0
【讨论】:
以上是关于Oracle SQL 获取第三个表的参考的主要内容,如果未能解决你的问题,请参考以下文章
有啥方法可以获取 PostgreSQL 中第一个、第二个、第三个表的名称?
oracle 如何获取表的结构,就像mysql里的desc命令一样的功能,