MySQL: выберите таблицу с именем таблицы из набора записей

0

Я хотел бы сделать это за один шаг, поэтому я хотел бы знать, как я могу:

table a (documents) имеет: pk, document_id, template_id

Таблица b (templates) имеет: pk, template_id, template_table_name

Таблица c (template_table_name_1) имеет: pk, document_id, document_specific_columns

поэтому... Я хотел бы запросить таблицу a, получить document_id и template_id, а затем использовать таблицу b, я хотел бы получить document_specific_columns из таблицы c. PS: в таблице a может быть больше записей с одинаковым document_id, но с другим template_id Я предполагаю, что намерения довольно ясны, единственное, что я не знаю, как это сделать, - ссылаться на предложение FROM подзапроса, который возвращает te template_table_name1 в таблицу

  • 0
    Я вижу только взаимосвязь между таблицами A и C, ничто между B и C. Выборочные данные и ожидаемый результат облегчили бы вам задачу.
Теги:

1 ответ

1
Лучший ответ

Самый простой способ сделать это - построить SQL-запрос на любом своем клиенте.

Итак, первым SQL-запросом будет

select   t.template_table_name
from     templates    t, 
         documents    d
where    d.template_id = t.template_id
and      d.document_id = @param_document_id

Тогда вы бы на своем клиенте создали второй SQL-запрос, чтобы выбрать * из любого имени template_table_name.

Если вы хотите сделать все это за один проход в базу данных, вам нужно будет сделать это в хранимой процедуре. MySQL не поддерживает динамический SQL, но вы можете обманывать, создавая подготовленные инструкции.

http://forums.mysql.com/read.php?60,3127,6260#msg-6260

  • 0
    благодарю вас. на самом деле это то, что я сделал.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню