Использование значения поля в качестве имени столбца в запросе - PullRequest
0 голосов
/ 22 июня 2010

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

Вот моя попытка, но я не могу найти способ использовать значение операции в качестве ссылки. Моя проблема в том, что мне нужно поле, которое соответствует значению 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 не будет знать, что он запрашивает, чтобы оптимизировать его на основе индексов и т. Д. Это относится к динамическим именам таблиц, хотя я не был уверен это было то же самое.

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

1 Ответ

0 голосов
/ 28 июня 2010

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

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

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)
...