это моя проблема: я хочу проверить строки в таблице, имя которой параметризовано, что-то вроде table_X
. Значение X исходит из другой таблицы, поэтому, например, в моей основной таблице у меня есть столбец c_id
и столбец X, таблица, к которой нужно присоединиться, имеет имя table_X, она, несомненно, СУЩЕСТВУЕТ, и у нее есть тот же столбец c_id
, который я должен присоединиться, чтобы проверить, есть ли значения c_id
в этой таблице.
Я попробовал представление, но безуспешно, потому что я не могу поместить параметризованное имя таблицы в представление. Я могу параметризовать предложения where и другие вещи, но не имена таблиц.
Я пробовал процедуру с
SET @q = CONCAT('select blabla from table_', X); PREPARE stmt FROM @q; EXECUTE stmt;
но процедуры не могут возвращать значения, а мне это нужно, потому что мне нужно знать, есть ли значение
c_id
в параметризованной таблице, иначе это бесполезно.Я попробовал функцию, но «Динамический SQL не разрешен в хранимой функции или триггере».
Итак, что я могу сделать, чтобы извлечь эти данные? Я вызываю это представление/функцию/что угодно из PHP, и я знаю, что могу сделать это со стороны PHP с двумя запросами, но мне нужно сделать это на стороне БД для будущих реализаций. Является ли это возможным?
ПРИМЕЧАНИЕ. Я не могу изменить структуру базы данных :) кстати, это база данных Limesurvey, звучит как сумасшедшая структура БД, да?