MYSQL присоединяется к таблице, ее имя хранится как значение поля в другой таблице

Я пытаюсь создать динамический запрос в MYSQL, чтобы присоединиться к таблице, ее имя хранится как значение поля в другой таблице, например:

SELECT * FROM CATEGORIES 
INNER JOIN CATEGORISATIONS ON CATEGORISATIONS.id = CATEGORIES.fk_categorisation
INNER JOIN [CATEGORISATIONS.nom_table] LV_REGIONS ON LV_REGIONS.id = CATEGORIES.valeur

Любой ответ?!

Ответ 2

Моя первая рекомендация - найти тех, кто проектировал эту схему, и дать им хорошую книгу по дизайну реляционных баз данных.

Оттуда вы можете возглавить одно из двух направлений: первое - отменить беспорядок, который у вас есть в схеме, путем загрузки отдельных таблиц, названных CATEGORIZATIONS.nom_table, в одну таблицу REGIONS, с которой вы можете напрямую запросить.

Кроме того, вам нужно разбить этот запрос на несколько частей, используя результат первого INNER JOIN, чтобы построить запрос UNION для выполнения второй INNER JOIN.

Ответ 3

Я собираюсь предположить, что вы пытаетесь получить "[CATEGORISATIONS.nom_table]", чтобы разрешить имя таблицы.

В этом случае вы можете попытаться использовать там подзапрос, который разрешит только одно имя таблицы (так что набор результатов с 1 строкой и 1 столбец). Я не уверен, что MySQL примет имя строки для таблицы, но стоит попробовать.

Ответ 4

Может быть, парень, который это сделал, знал, что это действительно не хорошая практика дизайна... но иногда вам приходится делать дерьмовый взлом, чтобы делать то, что вы хотите сделать...

Из того, что я знаю о предмете, я не думаю, что вы можете добиться этого только с помощью запроса SELECT.

Может быть, с сохраненным proc...

Ответ 5

Я попытался использовать значения таблицы mysql, возвращенные из подзапроса, как имена полей до и не были успешными. Я никогда не мог заставить mysql принимать значение набора записей в качестве имени поля. К сожалению, мне пришлось использовать php для выполнения этой задачи.