Циклический оператор SELECT для повторяющихся имен столбцов

Я попытался найти решение для громоздкого кода в 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, как вы можете видеть по моему коду.

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

Madhur Bhaiya 25.10.2018 08:51

Если вы знаете настоящее имя Column_, что было бы неправильным в том, чтобы просто создать запрос, который вы хотите, с помощью вырезания и вставки?

Tim Biegeleisen 25.10.2018 08:54

Каждый раз, когда вы сталкиваетесь с пронумерованными столбцами (скажем, над цифрой «2»), вы можете быть УВЕРЕНЫ, что ваш дизайн серьезно ошибочен. См. Нормализацию.

Strawberry 25.10.2018 08:54

@ Strawberry Я знаю, что в дизайне есть недостатки, я уже упоминал об этом. К сожалению, это невозможно изменить.

Jordski91 25.10.2018 09:31

@MadhurBhaiya Мне нужно выполнить только этот запрос, приложения нет. Приложение под названием MiniTab выполняет запрос, а затем анализирует данные результатов. Может быть, пример хранимой процедуры?

Jordski91 25.10.2018 09:34

@TimBiegeleisen Я не против этого сделать, но я должен вам скопировать одно и то же утверждение 26 раз, вы делаете что-то не так, на мой взгляд. Я обновлю пост с точным текущим запросом

Jordski91 25.10.2018 09:35

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

Strawberry 25.10.2018 10:42

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

Jordski91 26.10.2018 09:13
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
8
37
0

Другие вопросы по теме