Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:GROUP_CONCAT nidificato

Prova:

mysql> SELECT -> GROUP_CONCAT( -> CONCAT_WS('|||', 0, 1, -> GROUP_CONCAT(CONCAT_WS('|', 2, 3) SEPARATOR '||') -> ) -> ) `test`;ERRORE 1111 (HY000):uso non valido della funzione di gruppomysql> SELECT -> GROUP_CONCAT( -> CONCAT_WS('|||', 0, 1, -> (SELECT GROUP_CONCAT(CONCAT_WS('|', 2, 3) SEPARATORE '||')) -> ) -> ) `test`;+-------------+| prova |+-------------+| 0|||1|||2|3 |+--------------+1 riga nel set (0,00 sec) 

AGGIORNAMENTO

Una possibile opzione:

mysql> DROP TABLE SE ESISTE `parts`, `labor`, `kits`;Query OK, 0 righe interessate (0.00 sec)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, -> `quantity` varchar(45) DEFAULT NULL, -> CHIAVE PRIMARIA (`id`), -> CHIAVE UNICA `id_UNIQUE` (`id`), -> CHIAVE `KIT` (` kit_id`) -> );Query OK, 0 righe interessate (0.00 sec)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', -> CHIAVE PRIMARIA (` id`), -> CHIAVE UNICA `id_UNIQUE` (`id`), -> CHIAVE `KIT` (`kit_id`) -> );Query OK, 0 righe interessate (0.00 sec)mysql> CREATE TABLE `parti` ( -> `id` int(11) NON 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, -> `prezzo_vendita` varchar(45) DEFAULT '0.00', -> `quantity` varchar(45) NOT NULL, -> CHIAVE PRIMARIA (`id`), -> CHIAVE UNICA `id_UNIQUE` (` id`), -> CHIAVE `KIT` (`kit_id`) -> );Query OK, 0 righe interessate (0.00 sec)mysql> INSERT INTO `kits` -> (`id`, -> `kit_id`, -> `is_quote`, -> `name`, -> `description`, -> `quantity`) -> VALUES -> (1,0,0,"Main Kit", "Sample Description",1);Query OK , 1 riga interessata (0.00 sec)mysql> INSERT INTO `kits` -> (`id`, -> `kit_id`, -> `is_quote`, -> `name`, -> `description`, -> `quantity `) -> VALUES -> (2,1,0,"Kit within kit", "Sample Description",1);Query OK, 1 riga interessata (0.00 sec)mysql> INSERT INTO `parts` -> (`kit_id `, -> `è_citazione`, -> `nome`, -> `descrizione`, -> `prezzo_svendita`, -> `quantity`) -> VALUES -> (1,0,"First Kit Part", "Part description","23.5",1);Query OK, 1 riga interessata (0.00 sec)mysql> INSERT INTO `parts ` -> (`kit_id`, -> `is_quote`, -> `name`, -> `description`, -> `sale_price`, -> `quantity`) -> VALUES -> (2,0,"Kit all'interno del kit parte 1", "Descrizione parte campione","23.5",1);Query OK, 1 riga interessata (0.00 sec)mysql> INSERT INTO `parts` -> (`kit_id`, -> `is_quote`, -> `nome`, -> `descrizione`, -> `prezzo_vendita`, -> `quantità`) -> VALORI -> (2,0,"Kit all'interno del kit parte 2", "Descrizione parte campione","23.5" ,1);Query OK, 1 riga interessata (0.00 sec)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> `description`, -> `hours`) -> VALUES -> (1,0,"First Kit labor","1.5");Query OK, 1 riga interessata (0.00 sec)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> ` description`, -> `hours`) -> VALUES -> (2,0,"Kit within kit labor 1","1.5");Query OK, 1 riga interessata (0.00 sec)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> `description`, -> `hours`) -> VALUES -> (2,0,"Kit within kit labor 2 ","1.5");Query OK, 1 riga interessata (0.00 sec)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) -> SEPARATORE '||') DA parti DOVE parts.kit_id =kits_table.id), -> (SELECT GROUP_CONCAT( -> CONCAT_WS('|', labor.id, labor.description) -> SEPARATORE '||') DA lavoro WHERE labor.kit_id =kits_table.id) -> ) -> SEPARATORE '||||' -> ) come kit , -> GROUP_CONCAT(CONCAT_WS('|', parts.id, parts.name) SEPARATOR '|||') come parti, -> GROUP_CONCAT(CONCAT_WS('|', labor.id, labor.description) SEPARATOR '| ||') come manodopera -> DA kit -> LEFT JOIN kit come kit_tabella SU kit_tabella .kit_id =kits.id -> LEFT OUTER JOIN parts ON parts.kit_id =kits.id -> LEFT OUTER JOIN labor.kit_id =kits.id -> WHERE kits.id =1 -> GROUP BY kits.id\ G*************************** 1. riga ******************** ******** id:1is_quote:0 kit:2|||Kit nel kit|||2|Kit nel kit parte 1||3|Kit nel kit parte 2|||2|Kit nel kit lavoro 1||3|Kit all'interno del kit di manodopera 2 parti:1|Prima parte del kit di manodopera:1|Prima manodopera del kit1 riga del set (0,00 sec) 

AGGIORNAMENTO 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) -> SEPARATORE '||') FROM parts WHERE parts.kit_id =kits_table.id), -> (SELECT GROUP_CONCAT(DISTINCT -> CONCAT_WS('|', labor. id, labor.description) -> SEPARATOR '||') FROM labor WHERE labor.kit_id =kits_table.id) -> ) -> SEPARATOR '||||' -> ) come kit, -> GROUP_CONCAT(DISTINCT CONCAT_WS( '|', parts.id, parts.name) SEPARATOR '|||') come parti, -> GROUP_CONCAT(DISTINCT CONCAT_WS('|', labor.id, labor.description) SEPARATOR '|||') come manodopera -> DA kit -> LEFT JOIN kit come kits_table ON kits_table.kit_id =kits.id -> LEFT OUTER JOIN parti ON parts.kit_id =kits.id -> LEFT OUTER JOIN labor.kit_id =kits.id -> DOVE kits.id =1 -> GROUP BY kits.id\G*************************** 1. riga *************** ************ id:1is_quote:0 kit:2|||Kit nel kit|||3|Kit nel kit parte 1||4|Kit nel kit parte 2|||3| Kit all'interno del kit manodopera 1||4|Kit all'interno del kit manodopera 2 parti:1|Primo kit parte 1|||2|Primo kit parte 2 manodopera:1|Primo kit manodopera 1|||2|Primo kit manodopera 21 righe in impostare (0,00 sec)