MySql: динамическое добавление столбцов, столько же строк, сколько в другой таблице

0

Транспортный стол

id  name
1   T1
2   T2

Стол для поддонов

id  name
1   P1
2   P2

Таблица грузоподъемности поддонов

id  transport_id  pallet_id  capacity
1   1             1          10
2   1             2          null
3   2             1          20
4   2             2          24

Как создать таблицу следующим образом:

id  transport_id   pallet_id_1_capacity   pallet_id_2_capacity
1   1              10                     null
2   2              20                     24

Проблема: можно добавить поддоны и транспорты, поэтому ни одно количество не известно заранее. Например, менеджер добавляет другой тип поддона и должен генерироваться столбец "pallet_id_3_capacity" (и может показывать значение null, если данные о емкости пока недоступны). Другой менеджер может заполнить таблицу "емкость транспортной поддоны" позже, когда будет уведомлен.

Есть ли способ построить sql в mysql, который будет заботиться об этом: в частности - динамическое количество поддонов?

Теги:
pivot-table

1 ответ

1

Список выбора SQL должен быть исправлен во время написания запроса. Вы не можете сделать SQL, который автоматически расширяет свои столбцы на основе найденных данных.

Но ваш запрос является общим, он называется сводной таблицей или таблицей кросс-таблицы.

Единственное решение - сделать это несколькими шагами:

  1. Запрос на обнаружение отдельных идентификаторов поддонов.
  2. Используйте код приложения для построения динамического SQL-запроса с таким количеством столбцов, как различные значения идентификатора паллет, найденные в первом запросе.
  3. Запустите результирующий динамический SQL-запрос.

Это справедливо для всех баз данных SQL, а не только для MySQL.

См. MySQL pivot row в динамическое число столбцов для высокопринятого решения для создания запроса сводной таблицы в MySQL.

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

Ещё вопросы

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