Zkuste:
mysql> SELECT -> GROUP_CONCAT( -> CONCAT_WS('|||', 0, 1, -> GROUP_CONCAT(CONCAT_WS('|', 2, 3) SEPARATOR '||') -> ) -> ) `test`;CHYBA 1111 (HY000):Neplatné použití skupinové funkcemysql> SELECT -> GROUP_CONCAT( -> CONCAT_WS('|||', 0, 1, -> (SELECT GROUP_CONCAT(CONCAT_WS('|', 2, 3) SEPARATOR '||')) -> ) -> ) `test`;+-------------+| test |+--------------+| 0|||1|||2|3 |+-------------+1 řádek v sadě (0,00 s)
AKTUALIZACE
Jedna z možných možností:
mysql> DROP TABLE IF EXISTS `parts`, `labor`, `kits`;Dotaz je v pořádku, 0 ovlivněných řádků (0,00 s)mysql> CREATE TABLE `kits` ( -> `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, -> `množství` varchar(45) VÝCHOZÍ NULL, -> PRIMÁRNÍ KLÍČ (`id`), -> UNIQUE KEY `id_UNIQUE` (`id`), -> KEY `KIT` (` kit_id`) -> );Dotaz je v pořádku, ovlivněno 0 řádků (0,00 s)mysql> CREATE TABLE `labor` ( -> `id` int(11) NOT NULL AUTO_INCREMENT, -> `kit_id` int(11) DEFAULT NULL, -> `is_quote` tinyint(4) NOT NULL DEFAULT '0', -> `description` varchar(150) NOT NULL, -> `hours` varchar(45) NOT NULL DEFAULT '0', -> PRIMARY KEY (` id`), -> UNIQUE KEY `id_UNIQUE` (`id`), -> KEY `KIT` (`kit_id`) -> );Dotaz je v pořádku, 0 ovlivněných řádků (0,00 s)mysql> CREATE TABLE `části` ( -> `id` int(11) NOT 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) DEFAULT NULL, -> `sale_price` varchar(45) DEFAULT '0.00', -> `quantity` varchar(45) NOT NULL, -> PRIMARY KEY (`id`), -> UNIQUE KEY `id_UNIQUE` (` id`), -> KEY `KIT` (`kit_id`) -> );Dotaz OK, ovlivněno 0 řádků (0,00 s)mysql> INSERT INTO `kits` -> (`id`, -> `kit_id`, -> `is_quote`, -> `name`, -> `description`, -> `quantity`) -> VALUES -> (1,0,0,"Hlavní sada", "Ukázkový popis",1);Dotaz OK , ovlivněný 1 řádek (0,00 s)mysql> INSERT INTO `kit` -> (`id`, -> `kit_id`, -> `is_quote`, -> `name`, -> `description`, -> `quantity `) -> VALUES -> (2,1,0,"Kit v sadě", "Ukázkový popis",1);Dotaz je v pořádku, ovlivněn 1 řádek (0,00 s)mysql> INSERT INTO `parts` -> (`kit_id `, -> `je_nabídka`, -> `název`, -> `popis`, -> `sale_price`, -> `množství`) -> VALUES -> (1,0,"První díl sady", "Popis dílu","23,5",1);Dotaz je v pořádku, ovlivněn 1 řádek (0,00 s)mysql> INSERT INTO `díly ` -> (`kit_id`, -> `is_quote`, -> `name`, -> `description`, -> `sale_price`, -> `quantity`) -> VALUES -> (2,0,"Kit v rámci sady 1", "Sample Part Description","23.5",1);Dotaz OK, ovlivněn 1 řádek (0,00 s)mysql> INSERT INTO `parts` -> (`kit_id`, -> `is_quote`, -> `název`, -> `description`, -> `sale_price`, -> `quantity`) -> VALUES -> (2,0,"Kit v rámci sady, část 2", "Ukázkový popis dílu","23,5" ,1);Dotaz je v pořádku, ovlivněn 1 řádek (0,00 s)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> `description`, -> `hours`) -> VALUES -> (1,0,"First Kit labor","1.5");Dotaz je v pořádku, ovlivněn 1 řádek (0,00 s)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> ` popis`, -> `hodiny`) -> VALUES -> (2,0,"Kit v rámci sady práce 1","1.5");Dotaz je v pořádku, ovlivněn 1 řádek (0,00 sec)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> `description`, -> `hours`) -> VALUES -> (2,0,"Kit within kit labor 2 ","1.5");Dotaz je v pořádku, ovlivněn 1 řádek (0,00 s)mysql> SELECT kits.id, kits.is_quote, -> GROUP_CONCAT( -> CONCAT_WS('|||', kits_table.id, kits_table.name, -> (SELECT GROUP_CONCAT( -> CONCAT_WS('|', parts.id, parts.name) -> SEPARATOR '||') FROM parts WHERE parts.kit_id =kits_table.id), -> (SELECT GROUP_CONCAT( -> CONCAT_WS('|', labor.id, labor.description) -> SEPARATOR '||') FROM work WHERE labor.kit_id =kits_table.id) -> ) -> SEPARATOR '||||' -> ) jako sady , -> GROUP_CONCAT(CONCAT_WS('|', parts.id, parts.name) SEPARATOR '|||') jako části, -> GROUP_CONCAT(CONCAT_WS('|', labor.id, labor.description) SEPARATOR '| ||') jako práce -> ZE sad -> LEFT JOIN sady jako sady_tabulka NA tabulce_sad .kit_id =kits.id -> LEFT OUTER JOIN parts 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. řádek ******************** ******** id:1is_quote:0 sad:2|||Sada v sadě|||2|Sada v části sady 1||3|Sada v části sady 2|||2|Sada v rámci sady práce 1||3|Práce sady v rámci sady 2 díly:1|První práce součásti sady:1|Práce první sady1 řada v sadě (0,00 s)
AKTUALIZACE 2
mysql> SELECT kits.id, kits.is_quote, -> GROUP_CONCAT(DISTINCT -> CONCAT_WS('|||', kits_table.id, kits_table.name, -> (SELECT GROUP_CONCAT(DISTINCT -> CONCAT_WS ('|', parts.id, parts.name) -> SEPARATOR '||') FROM parts WHERE parts.kit_id =kits_table.id), -> (SELECT GROUP_CONCAT(DISTINCT -> CONCAT_WS('|', prac. id, labor.description) -> SEPARATOR '||') FROM work WHERE labor.kit_id =kits_table.id) -> ) -> SEPARATOR '||||' -> ) jako sady, -> GROUP_CONCAT(DISTINCT CONCAT_WS( '|', parts.id, parts.name) SEPARATOR '|||') jako části, -> GROUP_CONCAT(DISTINCT CONCAT_WS('|', labor.id, labor.description) SEPARATOR '|||') jako práce -> OD kitů -> LEFT JOIN kits as kits_table ON kits_table.kit_id =kits.id -> LEFT OUTER JOIN parts 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. řádek *************** ************ id:1is_quote:0 sad:2|||Sada v sadě|||3|Sada v části sady 1||4|Sada v části sady 2|||3| Práce sady v rámci sady 1||4|Sada v rámci práce sady 2 díly:1|První část sady 1|||2| Práce první sady část 2:1| Práce první sady 1|||2| Práce první sady 21 řádků set (0,00 s)