tengo una base de datos llamadaimitaren mibase de datos postgres. Estoy intentando ejecutar este comando:
select hadm_id from admission_ids where hadm_id in (select distinct on (subject_id) hadm_id from (select * from admissions order by admittime) tt
pero recibo este error: La relación "admisiones" no existe. Cuando modifico la consulta cambiando admisiones para imitar iii.admisiones, funciona. sabiendo que mimic iii es el esquema, cuando escribo esta consulta este es el resultado que aparece:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'mimiciii';
table_name
--------------------
admissions
callout
caregivers
datetimeevents
...
Mi pregunta es ¿qué puedo hacer para que el usuario escriba solo el nombre de la tabla sin usar el esquema.tableName?
Respuesta1
Mi pregunta es ¿qué puedo hacer para que el usuario escriba solo el nombre de la tabla sin usar el esquema.tableName?
Al poner el esquema en susearch_path
.
Además de SET search_path TO ...
ser válido mientras dure la sesión, puede hacerse permanente por usuario con ALTER USER username SET search_path='...'
, o por base de datos con ALTER DATABASE dbname SET search_path='...'
.