Использование значения поля в качестве имени столбца в запросе

0

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

Вот моя попытка, но я не могу найти способ использовать значение операции в качестве ссылки. Моя проблема: мне нужно поле, которое соответствует значению t1.operation в подзапросе, а не значение t1.operation. Это имело какой-то смысл?

SELECT t1.*,
  (SELECT t1.operation
   FROM report_tables.roc_capacity_standards As t2
   WHERE t1.assembly=t2.part_number) As standard
FROM report_tables.resource_transactions As t1
WHERE t1.date BETWEEN '2010-06-01'
                  AND '2010-06-19'
GROUP BY job, employee
ORDER BY operation;

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

Это было найдено здесь: Ссылка

Теги:
pass-by-reference

1 ответ

0

Я считаю, что ваша проблема заключается в дизайне ваших таблиц, а не в вашем запросе.

Если я прав, ваши таблицы выглядят примерно так:

units (unit_id, current_operation, date, ...)
operations (unit_id, operation_1_value, operation_2_value, operation_3_value, ...)

Это плохой дизайн, так как он приводит к таким проблемам, как сейчас.

Лучшим дизайном будет

units (unit_id, *other unit specific info* ...)
operations (operation_id, operation_name, *other general operation info*)
unit_operation (unit_id, operation_id, *operation_results, *operation_values, *date_started, *date_ended)

Ещё вопросы

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