【发布时间】:2012-12-06 23:25:46
【问题描述】:
我在运行此查询时收到“不明确的列”错误,但我很难找到原因:
select bobooks.ID request,
bobooks.TITLE,
bobooks.AUTHOR,
bogenres.NAME genre,
bobooks.OWNER,
bostatus.NAME status,
bolanguages.LANGUAGE language,
bolanguages2.LANGUAGE secondary_language
from BO_BOOKS bobooks
inner join BO_GENRES bogenres
on bobooks.genre = bogenres.id
inner join BO_STATUS bostatus
on bobooks.status = bostatus.id
inner join BO_LANGUAGES bolanguages
on bobooks.language = bolanguages.id
left outer join BO_LANGUAGES bolanguages2
on bobooks.secondary_language = bolanguages2.id
where (replace(:P19_AUTHOR, ' ', '') = '' or
bobooks.author like '%'||:P19_AUTHOR||'%') AND
(replace(:P19_TITLE, ' ', '') = '' or
bobooks.title like '%'||:P19_TITLE||'%') AND
(:P14_LANGUAGE = 'all' or
language = :P19_LANGUAGE or
secondary_language = :P19_LANGUAGE) AND
(:P19_GENRE = 'all' or
genre = :P19_GENRE) AND
(replace(:P19_OWNER, ' ', '') = '' or
bobooks.owner like '%'||:P19_OWNER||'%');
我搞砸了哪些列?
非常感谢您的宝贵时间!
【问题讨论】:
-
很难说没有看到你的架构,但是看看你的 WHERE 子句,你没有为你的列加上别名。为每一列添加一个别名,您的问题应该会消失。
-
没有你的模式是不可能的。但它必须是非完全限定的列之一,因此使它们都完全限定。
-
在您的 WHERE 子句中,您有不合格的
language、secondary_language和genre。它一定是其中之一。 -
这是完整的错误信息吗?
-
违规列的名称是什么?
标签: sql oracle plsql multiple-columns ambiguous