Приветствую!
Помогите разобраться. Имеем запрос следующего вида:
SELECT param, value, domain, INDEX('my.example.net', domain) AS "level" FROM table1 AS "table2" WHERE table2.level>0
Так есть, необходимо сделать выборку по виртуальному столбцу, на что postgres выдаёт следующую ошибку: "ОШИБКА: колонка table2.level не существует. SQL-состояние: 42703".
Это баг или для подобного должен быть иной синтаксис? Ну не везде же писать "index('my.example.net', domain)"…
Вы путаете список выбора и
Вы путаете список выбора и табличное выражение. Рекомендую почитать главу Запросы:
http://postgresql.ru.net/manual/queries.html
Грубо говоря, список полей в SELECT (список выбора) - это то, что нужно показать из того что есть во FROM. Поскольку табличное выражение FROM (или попросту виртуальная таблица) формируется РАНЬШЕ, чем будет осуществлена выборка из неё посредством списка выбора в SELECT, то понятно, что использовать алиасы, употреблённые в списке выбора нельзя - они ещё не видны.