Опитайте:
mysql> SELECT -> GROUP_CONCAT( -> CONCAT_WS('|||', 0, 1, -> GROUP_CONCAT(CONCAT_WS('|', 2, 3) SEPARATOR '||') -> ) -> ) `тест`;ГРЕШКА 1111 (HY000):Невалидно използване на групова функцияmysql> SELECT -> GROUP_CONCAT( -> CONCAT_WS('|||', 0, 1, -> (SELECT GROUP_CONCAT(CONCAT_WS('|', 2, 3) СЕПАРАТОР '||')) -> ) -> ) `тест`;+------------+| тест |+------------+| 0|||1|||2|3 |+-----------+1 ред в комплект (0,00 сек)
АКТУАЛИЗИРАНЕ
Една възможна опция:
mysql> ИЗПУСКАНЕ НА ТАБЛИЦА, АКО СЪЩЕСТВУВА `части`, `труд`, `комплекти`;Заявката ОК, 0 засегнати реда (0.00 сек)mysql> СЪЗДАВАНЕ НА ТАБЛИЦА `комплекти` ( -> `id` int(11) ) NOT NULL AUTO_INCREMENT, -> `kit_id` int(11) DEFAULT NULL, -> `is_quote` tinyint(4) NOT NULL DEFAULT '0', -> `name` varchar(45) DEFAULT NULL, -> `description` varchar(150) DEFAULT NULL, -> `количество` varchar(45) DEFAULT NULL, -> ПРАВИЛЕН КЛЮЧ (`id`), -> UNIQUE KEY `id_UNIQUE` (`id`), -> KEY `KIT` (` kit_id`) -> );Запитване ОК, засегнати 0 реда (0,00 сек)mysql> СЪЗДАВАНЕ НА ТАБЛИЦА `labor` ( -> `id` int(11) НЕ НУЛВО AUTO_INCREMENT, -> `kit_id` int(11) ПО ПОДРАЗБИРАНЕ NULL, -> `is_quote` tinyint(4) NOT NULL DEFAULT '0', -> `description` varchar(150) NOT NULL, -> `hours` varchar(45) NOT NULL DEFAULT '0', -> ПРАВИЛЕН КЛЮЧ (` id`), -> УНИКАЛЕН КЛЮЧ `id_UNIQUE` (`id`), -> КЛЮЧ `KIT` (`kit_id`) -> );Заявката ОК, 0 засегнати реда (0,00 сек)mysql> СЪЗДАВАНЕ НА ТАБЛИЦА `части` ( -> `id` int(11) НЕ NU LL AUTO_INCREMENT, -> `kit_id` int(11) DEFAULT NULL, -> `is_quote` tinyint(4) NOT NULL DEFAULT '0', -> `name` varchar(45) DEFAULT NULL, -> `description` varchar( 150) ПО ПОДРАЗБИРАНЕ NULL, -> `sale_price` varchar(45) DEFAULT '0.00', -> `количество` varchar(45) НЕ NULL, -> ПЪРВИЧЕН КЛЮЧ (`id`), -> УНИКАЛЕН КЛЮЧ `id_UNIQUE` (` id`), -> КЛЮЧ `KIT` (`kit_id`) -> );Запитване ОК, 0 засегнати реда (0,00 сек)mysql> ВМЕСТЕ В `комплекти` -> (`id`, -> `kit_id`, -> `е_цитат`, -> `име`, -> `описание`, -> `количество`) -> СТОЙНОСТИ -> (1,0,0,"Основен комплект", "Примерно описание",1);Запитване OK , засегнат 1 ред (0,00 сек)mysql> ВМЕСТЕ В `комплекти` -> (`id`, -> `kit_id`, -> `is_quote`, -> `име`, -> `описание`, -> `количество `) -> СТОЙНОСТИ -> (2,1,0,"Комплект в комплекта", "Примерно описание",1);Запитване ОК, 1 ред засегнат (0,00 сек.)mysql> ВМЕСТЕ ВЪВ `части` -> (`kit_id `, -> `е_цитат`, -> `име`, -> `описание`, -> `продажна_цена`, -> `количество`) -> СТОЙНОСТИ -> (1,0,"Първа част на комплекта", "описание на част","23.5",1);Запитване ОК, 1 ред засегнат (0,00 сек)mysql> ВМЕСТЕ В `части ` -> (`kit_id`, -> `is_quote`, -> `име`, -> `description`, -> `sale_price`, -> `количество`) -> VALUES -> (2,0,"Kit в част 1 на комплекта", "Примерно описание на част","23.5",1);Запитване ОК, 1 ред засегнат (0,00 сек)mysql> ВМЕСТЕ ВЪВ `части` -> (`kit_id`, -> `is_quote`, -> `име`, -> `описание`, -> `продажна_цена`, -> `количество`) -> СТОЙНОСТИ -> (2,0,"Комплект в комплекта част 2", "Описание на примерна част","23.5" ,1);Запитване ОК, 1 ред засегнат (0,00 сек)mysql> ВМЕСТЕ ВЪВ `труд` -> (`kit_id`, -> `is_quote`, -> `описание`, -> `часове`) -> СТОЙНОСТИ -> (1,0,"First Kit labor","1.5");Запитване OK, 1 ред засегнат (0.00 sec)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> ` описание`, -> `часове`) -> СТОЙНОСТИ -> (2,0,"Комплект в комплекта труд 1","1.5");Заявката е ОК, 1 ред е засегнат (0,00 sec)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> `description`, -> `hours`) -> VALUES -> (2,0,"Комплект в комплект труд 2 ","1.5");Запитване ОК, 1 ред засегнат (0,00 сек)mysql> ИЗБЕРЕТЕ kits.id, kits.is_quote, -> GROUP_CONCAT( -> CONCAT_WS('|||', kits_table.id, kits_table.name, -> (ИЗБЕРЕТЕ GROUP_CONCAT( -> CONCAT_WS('|', Part.id, Part.name) -> SEPARATOR '||') ОТ части WHERE parts.kit_id =kits_table.id), -> (ИЗБЕРЕТЕ GROUP_CONCAT( ->) CONCAT_WS('|', labor.id, labor.description) -> SEPARATOR '||') ОТ труд WHERE labor.kit_id =kits_table.id) -> ) -> SEPARATOR '||||' -> ) като комплекти , -> GROUP_CONCAT(CONCAT_WS('|', part.id, parts.name) SEPARATOR '|||') като части, -> GROUP_CONCAT(CONCAT_WS('|', work.id, labor.description) SEPARATOR '| ||') като труд -> ОТ комплекти -> LEFT JOIN комплекти като kits_table ON kits_table .kit_id =kits.id -> LEFT OUTER JOIN части ON parts.kit_id =kits.id -> LEFT OUTER JOIN work ON labor.kit_id =kits.id -> WHERE kits.id =1 -> GROUP BY kits.id\ G****************************** 1. ред ******************** ******** id:1is_quote:0 комплекти:2|||Комплект в комплекта|||2|Комплект в комплекта част 1||3|Комплект в комплекта част 2|||2|Комплект в комплекта труд 1||3|Комплект в комплекта труд 2 части:1|Първи комплект Част труд:1|Първи комплект труд1 ред в комплект (0,00 сек)
АКТУАЛИЗИРАНЕ 2
mysql> ИЗБЕРЕТЕ kits.id, kits.is_quote, -> GROUP_CONCAT(DISTINCT -> CONCAT_WS('|||', kits_table.id, kits_table.name, -> SELECT GROUP_CONCAT(DISTINCT -> CONCAT_WS) ('|', part.id, part.name) -> СЕПАРАТОР '||') ОТ части КЪДЕ части.kit_id =kits_table.id), -> (ИЗБЕРЕТЕ GROUP_CONCAT(DISTINCT -> CONCAT_WS('|', труд. id, labor.description) -> SEPARATOR '||') ОТ труд WHERE work.kit_id =kits_table.id) -> ) -> SEPARATOR '||||' -> ) като комплекти, -> GROUP_CONCAT(DISTINCT CONCAT_WS( '|', part.id, part.name) SEPARATOR '|||') като части, -> GROUP_CONCAT(DISTINCT CONCAT_WS('|', labor.id, labor.description) SEPARATOR '|||') като труд -> ОТ комплекти -> LEFT JOIN комплекти като kits_table ON kits_table.kit_id =kits.id -> LEFT OUTER JOIN части ON parts.kit_id =kits.id -> LEFT OUTER JOIN работа ON labor.kit_id =kits.id -> КЪДЕ kits.id =1 -> GROUP BY kits.id\G****************************** 1. ред *************** ************ id:1is_quote:0 комплекти:2|||Комплект в комплекта|||3|Комплект в комплекта част 1||4|Комплект в комплекта част 2|||3| Комплект в комплект труд 1||4|Комплект в комплект труд 2 части:1|Първи комплект част 1|||2|Първи комплект, част 2 труд:1|Първи комплект труд 1|||2| Първи комплект труд 21 ред в набор (0,00 сек)