【发布时间】:2019-03-08 20:28:13
【问题描述】:
这是我的 Sql:
SELECT
t.RUFNAME,
count(v_anschrift.rufname) as Anrufe
FROM v_termin,
(
SELECT
RUFNAME
FROM
V_Anschrift
WHERE V_ANSCHRIFT.SPERRKZ = 0
AND V_ANSCHRIFT.OEM != 0
) t
JOIN v_anschrift ON (t.Rufname = v_anschrift.RUFNAME)
LEFT JOIN v_termin ON (v_termin.anschriftid = v_anschrift.anschriftid)
WHERE v_termin.TERMINART = 20
GROUP BY t.RUFNAME;
我收到此错误消息:
ORA-00918:Spalte nicht eindeutig 定义 00918. 00000 - “列定义不明确” *原因:
*行动: Zeile 的 Fehler:15 Spalte:7
我的错误在哪里?
【问题讨论】:
-
不要混合显式和隐式连接。随处切换到现代、明确的
JOIN语法!更容易编写(没有错误),更容易阅读和维护,如果需要更容易转换为外连接。 -
您在 FROM 子句中有两次 v_termin。故意地?有不同的表别名。
-
你为什么要两次加入
v_anschrift?和v_termin?对sperrkz和oem的限制可以很容易地添加到连接条件中。我看不出有一个子选择开始的理由。 -
简单:你有一个
FROM v_termin,然后是一个LEFT JOIN v_termin,你没有正确别名你的表,所以Oracle不能从哪个表中分辨出@ 987654330@。我开始写一个修复,但我停止了,因为你的查询很乱,尤其是没有 ON CLAUSE 的子查询。 -
死你的意思是这样的:cryptb.in/L7rn