Мне нужно написать запрос, который требует присоединения к другой таблице, но имя таблицы и имя столбца хранятся в другой таблице.Как использовать JOIN, когда имя таблицы и имя столбца хранятся в другой таблице?
У меня есть две таблицы, которые перечислены ниже:
Таблица "description_tab": (ID, type_id, REFERENCE_ID, название, описание)
Таблица "description_tab_type": (ID, type_name, reference_table, reference_column_name, reference_column_id)
где description_tab_type содержит имя другой таблицы и двух столбцов, которые мне нужны для JOIN.
Я попытался динамический SQL:
SELECT reference_table, reference_column_name, reference_column_id
INTO @reference_table, @reference_column_name, @reference_column_id
FROM description_tab_type WHERE type_name = 'Origin';
PREPARE statement FROM "select dt.description from description_tab dt join @reference_table on @[email protected]_column_id = dt.reference_id where @[email protected]_column_name = 'test'";
EXECUTE statement;
DEALLOCATE PREPARE statement;
но это не сработало. Когда я запускаю его, я получаю следующее:
У вас возникла ошибка в синтаксисе SQL; в руководстве, соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать вблизи «@reference_table на @ reference_table. @ reference_column_id = dt.reference_id где @refere» в строке 1
какие-либо предложения?
Строка sql неверна, используйте concat(). http://stackoverflow.com/questions/8363415/why-cant-i-use-a-variable-as-the-table-name-in-a-stored-procedure/8363487#8363487 – goat
динамический оператор SQL является единственным выход здесь. – TheVillageIdiot