В Postgres я использую подзапрос в предложении FROM, но не знаю, как получить желаемый результат. Скажем, у меня есть 2 таблицы, tableNameRegister(idNum integer, tableName text)
и mytable(comment text, orderVal integer)
.
tableNameRegister
будет выглядеть примерно так:
idnum | tablename
-------+------------
1 | mytable
2 | othertable
И mytable
будет выглядеть примерно так:
comment | orderval
-----------+-------
comment 1 | 1
comment 2 | 2
Я хочу взять значение tableName
из tableNameRegister
и выбрать из этого значения tableName
, но все в одном запросе. По сути, как-то так:
tabName = 'SELECT tableName FROM tableNameRegister WHERE idNum = 1;'
'SELECT * FROM ${tabName} WHERE orderVal = 2'
В идеале это вернет строку, содержащую comment 2
. Поэтому я попытался сделать это в подзапросе:
'SELECT * FROM (SELECT tableName FROM tableNameRegister WHERE idNum = 1) AS tabname WHERE orderVal = 2;'
Но узнал, но это не работает так, как я думал. По сути, он возвращает своего рода подтаблицу, основанную на результатах подзапроса, а не фактическое значение mytable
, которое я хочу. Мне было интересно, если есть способ сделать то, что я хотел, все в одном запросе / с использованием подзапросов? Или это то, что я должен был бы сделать программно и разделить на два запроса?