Mysql - строки в столбцы - PullRequest
       2

Mysql - строки в столбцы

0 голосов
/ 27 октября 2011

Вопрос:

Как экспортировать данные из таблиц ниже в файл cvs excel, чтобы все атрибуты в dog_attributes имели свой собственный столбец, использующий в основном MySQL?

ПРИМЕЧАНИЯ:

  • Я буду экспортировать один group_id и все dog_attributes для этого group_id за раз.
  • Может быть тысячи собак и несколько сотен group_elements на группу. я полагал, что использование в основном MySQL вместо цикла PHP было бы лучше для скорость, так как MySQL имеет встроенную функцию экспорта.
  • Мой сервер работает под управлением MySQL с PHP и Codeigniter Framework.

Пример:

Есть четыре стола.

group_tbl - группы настраиваются администратором и используются для хранения общих элементов.

+----+---------+
| id | var1    |
+----+---------+
| 1  | data    |
| 2  | data    |
+----+---------+

group_elements_tbl - содержит элементы, настроенные администратором. Это поля формы, заполненные пользователем.

+----+----------+-----------+
| id | group_id | elmt_name |
+----+----------+-----------+
| 1  | 1        | height    |
| 2  | 1        | color     |
| 3  | 2        | breed     |
+----+----------+-----------+

dogs_tbl - содержит собак, созданных каждым пользователем.

+----+----------+---------+
| id | group_id | name    |
+----+----------+---------+
| 1  | 1        | Rover   |
| 2  | 1        | Buck    |
| 3  | 2        | Rex     |
+----+----------+---------+

dog_attributes_tbl - содержит значения настройки пользовательских элементов в groups_elements_tbl администратором.

+----+--------------------+------------+
| id | group_elements_id  | attr_value |
+----+--------------------+------------+
| 1  | 1                  | 54 inches  |
| 2  | 2                  | brown      |
| 3  | 1                  | 34 inches  |
| 3  | 2                  | white      |
| 4  | 3                  | husky      |
+----+---------+------------+

Окончательные результаты:

Финальная таблица Excel для группа 1 (group_id = 1):

+--------+----------+-----------+--------+
| dog_id | dog_name | height    | color  |
+--------+----------+-----------+--------+
| 1      | Rover    | 54 inches | brown  |
| 2      | Buck     | 34 inches | white  |
+--------+----------+-----------+--------+

Конечная электронная таблица Excel для группа 2 (group_id = 2):

+--------+----------+-----------+
| dog_id | dog_name | breed     |
+--------+----------+-----------+
| 3      | Rex      | husky     |
+--------+----------+-----------+

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

Самый быстрый способ - обработать эти свойства программным способом - нет с SQL.

Вы должны захватить всех собак, во втором запросе все свойства интересующих вас собак и объединить их с foreach и т. Д.

0 голосов
/ 28 октября 2011

Я бы создал временную таблицу с полями:

group_id
dog_id
dog_name
elmt_name
attr_value

Это плоское представление исходной базы данных.Две важные вещи:

1) эта таблица должна быть создана с помощью хранимой процедуры mysql NOT с php AND в одной транзакции.В противном случае, если у вас тысячи собак, это будет очень медленно.

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

Затем с помощью простого запроса вы можете сгенерировать экспорт в Excel.Не забудьте индексы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...