У меня есть таблица t1 с столбцом «foo» и записи, содержащие «bar» и «baz» в столбце «foo». У меня также есть таблица t2 со столбцами 'bar', 'baz' и 'quux'. Я хочу сделать что-то вроде следующего:Выбор имен столбцов для другого SELECT - возможно?
SELECT (SELECT foo from t1) FROM t2;
, то есть получить два названия столбцов из t1 и запроса этих столбцов t2. Если я пытаюсь сделать это с MonetDB, я получаю сообщение об ошибке:
cardinality violation (2>1)
так,
- есть другой способ сделать это с MonetDB?
- это возможно в MySQL? другие СУБД?
Примеры запросов (или директив без запроса, за которыми следует запрос) приветствуются.
Для этого вы должны использовать динамический SQL ('prepare' и' execute' в MySQL). –
Нет, это вообще невозможно в СУБД, спецификация SQL включает в себя подзапросы, используемые в списке выбора, и те, которые возвращают данные, а не sg, которые были бы частью внешнего sql-запроса. Большинство RDBMS предлагают некоторую функцию, позволяющую динамически создавать SQL-команды, но разрешая выполнение произвольной строки в виде команды sql. – Shadow
@ Shadow: Ну, дело в том, MonetDB _does_ выполняет внутренний запрос. Мне просто нужно каким-то образом преобразовать вектор в последовательность строк. Я понимаю, что это возможно, но это не потому, что это «вообще» невозможно. – einpoklum