sql >> Database >  >> RDS >> Oracle

Dubbelzinnige kolomquery

U kunt NIET verwijzen naar kolomaliassen in de SELECT-component binnen de WHERE-component, althans niet in dezelfde query. U kunt er een subquery op uitvoeren of gewoon de originele kolomverwijzingen gebruiken.

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||'%');


  1. Tabel wijzigen te traag in postgres

  2. Vraag hoe u de ontbrekende datums in sql . kunt toevoegen

  3. Hoe geef je een tabel of rijen door aan een functie in Postgresql?

  4. Geneste transacties gebruiken in Oracle