Я попытался найти решение для громоздкого кода в Google и Stackoverflow. Для базы данных MySQL я хочу получить большой объем данных. Эта база данных разработана не нами, а внешней компанией, поэтому я не могу нести ответственность за отсутствие навыков проектирования баз данных.
Проблема в том, что мне нужно выбрать 52 столбца, у каждого из которых есть имя столбца с увеличивающимся числом (как можно увидеть в примере).
SELECT results.tc_serial AS "SerialNo",
results.total_result AS "TotalResult",
results.eval_01_id AS "Measurement1_ID",
eval1_parameter.tag AS "Measurement1_TAG",
eval_result1.value AS "Measurement1_VAL",
eval2_parameter.tag AS "Measurement2_TAG",
eval_result2.value AS "Measurement2_VAL",
eval3_parameter.tag AS "Measurement3_TAG",
eval_result3.value AS "Measurement3_VAL",
eval4_parameter.tag AS "Measurement4_TAG",
eval_result4.value AS "Measurement4_VAL",
eval5_parameter.tag AS "Measurement5_TAG",
eval_result5.value AS "Measurement5_VAL",
eval6_parameter.tag AS "Measurement6_TAG",
eval_result6.value AS "Measurement6_VAL"
FROM ga_35_4599_ipc_01.test_results results
JOIN ga_35_4599_ipc_01.test_parameters test_parameter ON
results.test_parameter_id = test_parameter.id
JOIN ga_35_4599_ipc_01.eval_windows_results eval_result1 ON
results.eval_01_id = eval_result1.id
JOIN ga_35_4599_ipc_01.eval_windows_results eval_result2 ON
results.eval_02_id = eval_result2.id
JOIN ga_35_4599_ipc_01.eval_windows_results eval_result3 ON
results.eval_03_id = eval_result3.id
JOIN ga_35_4599_ipc_01.eval_windows_results eval_result4 ON
results.eval_04_id = eval_result4.id
JOIN ga_35_4599_ipc_01.eval_windows_results eval_result5 ON
results.eval_05_id = eval_result5.id
JOIN ga_35_4599_ipc_01.eval_windows_results eval_result6 ON
results.eval_06_id = eval_result6.id
JOIN ga_35_4599_ipc_01.eval_windows_para eval1_parameter ON
test_parameter.eval_01_id = eval1_parameter.id
JOIN ga_35_4599_ipc_01.eval_windows_para eval2_parameter ON
test_parameter.eval_02_id = eval2_parameter.id
JOIN ga_35_4599_ipc_01.eval_windows_para eval3_parameter ON
test_parameter.eval_03_id = eval3_parameter.id
JOIN ga_35_4599_ipc_01.eval_windows_para eval4_parameter ON
test_parameter.eval_04_id = eval4_parameter.id
JOIN ga_35_4599_ipc_01.eval_windows_para eval5_parameter ON
test_parameter.eval_05_id = eval5_parameter.id
JOIN ga_35_4599_ipc_01.eval_windows_para eval6_parameter ON
test_parameter.eval_06_id = eval6_parameter.id
order by results.time desc
limit 10;
Есть ли способ выполнить цикл через SELECT таким образом, как:
FOR (INT i = 1; i <= 52; i++)
SELECT Column_[i]
FROM tstDatabase
Еще раз прошу прощения, если я просмотрел какой-нибудь прекрасный пример. Я также не гений (My) SQL, как вы можете видеть по моему коду.
Если вы знаете настоящее имя Column_, что было бы неправильным в том, чтобы просто создать запрос, который вы хотите, с помощью вырезания и вставки?
Каждый раз, когда вы сталкиваетесь с пронумерованными столбцами (скажем, над цифрой «2»), вы можете быть УВЕРЕНЫ, что ваш дизайн серьезно ошибочен. См. Нормализацию.
@ Strawberry Я знаю, что в дизайне есть недостатки, я уже упоминал об этом. К сожалению, это невозможно изменить.
@MadhurBhaiya Мне нужно выполнить только этот запрос, приложения нет. Приложение под названием MiniTab выполняет запрос, а затем анализирует данные результатов. Может быть, пример хранимой процедуры?
@TimBiegeleisen Я не против этого сделать, но я должен вам скопировать одно и то же утверждение 26 раз, вы делаете что-то не так, на мой взгляд. Я обновлю пост с точным текущим запросом
На мой взгляд, MySQL - это хранение и извлечение нормализованных данных. Если вы не собираетесь возиться с нормализацией, то можете не беспокоиться и о MySQL. Поэтому я отвергаю предпосылку вопроса.
это приложение, к которому присоединяется MySQL, написано внешним машиностроителем, мы являемся производственным предприятием. У нас нет доступа к коду и нет корневого доступа к базе данных MySQL. Я знаю, что нормализация - это путь, но мы не можем, это не вопрос желания. но если вы не хотите мне помогать, то я предлагаю вам держать тему в чистоте для тех, кто действительно хочет помочь, извините @ Strawberry






Вы можете динамически подготовить эту строку SQL-запроса в коде вашего приложения (например: PHP, Java, C++ и т. д.)