I'm getting the "ambiguous column" error when running this query, but I'm having a hard time finding the cause:
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||'%');
Which columns am I messing up?
Thank you so much for your time!
You can NOT reference column aliases in the SELECT clause within the WHERE clause, at least not in the same query. You could subquery it, or just use the original column references.
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
bolanguages."LANGUAGE" = :P19_LANGUAGE
or
bolanguages2."LANGUAGE" = :P19_LANGUAGE)
AND
(:P19_GENRE = 'all'
or
bogenres."NAME" = :P19_GENRE)
AND
(replace(:P19_OWNER, ' ', '') = ''
or
bobooks.owner like '%'||:P19_OWNER||'%');