У меня есть таблица:MySQL Pivot или Excel Решение
CREATE TABLE `Issues` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
У меня есть еще один стол:
CREATE TABLE `Attachments` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`issue_id` int(11) DEFAULT NULL,
`attachment` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
Как я могу получить данные, чтобы выглядеть следующим образом:
issue_id title attachment1 attachment2 attachment3
--------------------------------------------------------------
1 T1 a1.png a2.png
2 T2
3 T3 b4.gif xyz.doc ttt.file
Проблема, которую я не могу понять, заключается в том, как получить динамический набор вложений в динамический столбец, сгруппированный по проблеме. Я определил, что максимальное количество вложений для одной проблемы составляет 12, но общая сумма за билет может быть от 0 до 12. Я в тупике ...
Я попробовал эту MySQL pivot row into dynamic number of columns, но не могу понять это в моем случае, потому что я построение динамических столбцов на основе всех матчей на запись ...
Любая помощь будет очень признательна. Пожалуйста, дайте мне знать, если это не имеет смысла.
Нино
+1. Было бы неплохо инициализировать '@previous: = NULL' в встроенном представлении с псевдонимом как' r', чтобы изолировать оператор от любого предыдущего значения, хранящегося в переменной @previous. В встроенном представлении с псевдонимом «d» первый a.issue_id в списке SELECT избыточен; псевдоним столбца 'issue_id' может быть назначен в строке, которая устанавливает @previous: = a.issue_id. Кроме того, ORDER BY в этом встроенном представлении сделает оператор более детерминированным, поскольку вложения будут возвращаться в указанной последовательности, а не позволять MySQL возвращать их в произвольном порядке. – spencer7593
@ spencer7593 - замечательные комментарии, большое спасибо! Я забыл curRow по ошибке из предыдущей версии :) Я отредактировал свой ответ - еще раз спасибо! – sgeddes
@sgeddes - Спасибо! Это здорово и отвечает моей непосредственной необходимости. Затем мне нужно будет выяснить, как получить тот же результат, используя максимальное количество вложений, сгруппированных по id (вот как я получил 12, чтобы начать). Поэтому, когда изменяются максимальные потенциальные вложения для одного идентификатора, столбцы также будут динамически изменяться. Если вы знаете, как это сделать, это полностью решит мой случай использования! –