Как вставить имя таблицы из результата другой таблицы - PullRequest
0 голосов
/ 05 мая 2020

У меня есть таблица в mysql под названием «таблицы», и эта таблица содержит имена всех имен таблиц и идентификаторов таблиц.

Схема из таблиц: enter image description here

Мне нужно выполнить ВНУТРЕННЕЕ СОЕДИНЕНИЕ этой таблицы и заменить значения {table} и {column_id}

    SELECT *
    FROM attributes_categories AS ac

    INNER JOIN attributes_codes AS aco ON aco.id_attribute_code = 
        ac.attributes_codes_id_attribute_code

    INNER JOIN {$table} AS b
    LEFT JOIN translations AS t ON t.id = b.{$column_id} 

Я пробую что-то вроде этого, НО, я не могу заменить "INNER JOIN {$ table}", потому что я не могу вставить результат вместо имени таблицы:

    SELECT COLUMN_NAME
    FROM attributes_categories AS ac

    INNER JOIN attributes_codes AS aco ON aco.id_attribute_code = 
       ac.attributes_codes_id_attribute_code

    INNER JOIN tables AS tab ON tab.id_table = ac.tables_id_table

    INNER JOIN INFORMATION_SCHEMA.TABLES ON TABLE_NAME = tab.table

    INNER JOIN tab.table AS b
    LEFT JOIN translations AS t ON t.id = b.column_id

    WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='knskjhpumw1' 

Результат:

Mensagens do MySQL :

#1146 - Tabela 'tab.table' does not exist

Спасибо!

1 Ответ

0 голосов
/ 17 мая 2020

В хранимой процедуре вы можете создать запрос с помощью CONCAT() (et c) и «выполнить» его. С его помощью вы можете 'легко' вставить имя таблицы c (et c).

Другой подход - создать SQL в вашем клиентском коде, например PHP или Java.

...