【发布时间】:2019-10-08 12:29:13
【问题描述】:
我有 2 张桌子。 第一个包含列的表 SEC_SEAL_LOG:
DATA_ADD,
DATA_AREA,
SEAL_NUMBER,
DATA_SEALING,
DATA_UNPLUG,
SORRUPTED.
SEC_WRITING_OFF_SEALS
第二个表格列:
DATA, SEAL.
我想把这两张表放在一起,但我不明白哪里出错了,我会很感激你的帮助。
select DATA_ADD,
DATA_AREA,
SEAL_NUMBER,
DATA_SEALING,
DATA_UNPLUG,
СORRUPTED,
Data
from SEC_SEAL_LOG,SEC_WRITING_OFF_SEALS
where (data_area = (select data_area
from SEC_USERS_LIST
where login = LOWER(:APP_USER)
and SEAL_NUMBER = SEAL
)
or 20 >= (select u.role
from SEC_users_list u
where u.login = lower(:APP_USER)
)
)
and СORRUPTED = 'Так'
and SEAL_NUMBER = SEAL
ORDER BY data_add DESC
我遇到了这个错误
ORA-20999:无法解析 SQL 查询!
ORA-06550:第 7 行,第 4 列:ORA-00918:列定义不明确
【问题讨论】:
-
错误是什么?? .
-
如果您遇到错误,请始终告诉我们错误是什么,所有错误消息请不要对其进行摘要
-
你真的应该使用 JOIN 而不是
from SEC_SEAL_LOG,SEC_WRITING_OFF_SEALS -
" column ambiguously defined" 这就是为什么你应该总是在 SQL 语言中使用完全限定的表或使用别名......或者你写
SELECT table_name.columns_name FROM table_name("fully " 也可以包含作为数据库名称的限定词,使其成为SELECT database_name.table_name.columns_name FROM table_name) 或使用SELECT alias_name.column_name FROM table_name AS alias_name(别名) -
类似的东西是的,但我也会遵循@RiggsFolly 的建议,使用
JOIN而不是旧的逗号JOIN .. Topicstarter 我假设你没有注意到你的SQL 是SEC_SEAL_LOG 之间的笛卡尔积和 SEC_WRITING_OFF_SEALS 在该结果被过滤之前?我很确定如果您共享数据和预期结果,查询可以(重新)编写得更好......请参阅Why should I provide a Minimal Reproducible Example for a very simple SQL query?