Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Verschachtelte GROUP_CONCAT

Versuchen Sie:

mysql> SELECT -> GROUP_CONCAT( -> CONCAT_WS('|||', 0, 1, -> GROUP_CONCAT(CONCAT_WS('|', 2, 3) SEPARATOR '||') -> ) -> ) `test`;ERROR 1111 (HY000):Ungültige Verwendung der Gruppenfunktionmysql> SELECT -> GROUP_CONCAT( -> CONCAT_WS('|||', 0, 1, -> (SELECT GROUP_CONCAT(CONCAT_WS('|', 2, 3) SEPARATOR '||')) -> ) -> ) `test`;+-------------+| Test |+-------------+| 0|||1|||2|3 |+-------------+1 Zeile im Satz (0,00 Sek.) 

AKTUALISIEREN

Eine mögliche Option:

mysql> DROP TABLE IF EXISTS `parts`, `labor`, `kits`;Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)mysql> CREATE TABLE `kits` ( -> `id` int(11 ) NOT NULL AUTO_INCREMENT, -> `kit_id` int(11) STANDARD NULL, -> `is_quote` tinyint(4) NOT NULL STANDARD '0', -> `name` varchar(45) STANDARD NULL, -> `description` varchar(150) STANDARD NULL, -> `Menge` varchar(45) STANDARD NULL, -> PRIMARY KEY (`id`), -> UNIQUE KEY `id_UNIQUE` (`id`), -> KEY `KIT` (` kit_id`) -> );Abfrage OK, 0 Zeilen betroffen (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', -> PRIMARY KEY (` id`), -> UNIQUE KEY `id_UNIQUE` (`id`), -> KEY `KIT` (`kit_id`) -> );Abfrage OK, 0 Zeilen betroffen (0.00 sec)mysql> CREATE TABLE `parts` ( -> `id` int(11) NICHT NU LL AUTO_INCREMENT, -> `kit_id` int(11) STANDARD NULL, -> `is_quote` tinyint(4) NOT NULL STANDARD '0', -> `name` varchar(45) STANDARD NULL, -> `description` varchar( 150) STANDARD NULL, -> `sale_price` varchar(45) STANDARD '0.00', -> `quantity` varchar(45) NOT NULL, -> PRIMARY KEY (`id`), -> UNIQUE KEY `id_UNIQUE` (` id`), -> KEY `KIT` (`kit_id`) -> );Abfrage OK, 0 Zeilen betroffen (0.00 sec)mysql> INSERT INTO `kits` -> (`id`, -> `kit_id`, -> `is_quote`, -> `name`, -> `description`, -> `quantity`) -> VALUES -> (1,0,0,"Main Kit", "Sample Description",1);Abfrage OK , 1 Zeile betroffen (0.00 sec)mysql> INSERT INTO `kits` -> (`id`, -> `kit_id`, -> `is_quote`, -> `name`, -> `description`, -> `quantity `) -> WERTE -> (2,1,0,"Kit innerhalb des Kits", "Beispielbeschreibung",1);Abfrage OK, 1 Zeile betroffen (0,00 Sek.)mysql> INSERT INTO `parts` -> (`kit_id `, -> `is_quote`, -> `name`, -> `description`, -> `sale_price`, -> `quantity`) -> VALUES -> (1,0,"First Kit Part", "Part description", "23.5",1);Abfrage OK, 1 Zeile betroffen (0.00 sec)mysql> INSERT INTO `parts ` -> (`kit_id`, -> `is_quote`, -> `name`, -> `description`, -> `sale_price`, -> `quantity`) -> VALUES -> (2,0,"Kit within kit part 1", "Sample Part Description","23.5",1);Abfrage OK, 1 Zeile betroffen (0.00 sec)mysql> INSERT INTO `parts` -> (`kit_id`, -> `is_quote`, -> `Name`, -> `Beschreibung`, -> `Verkaufspreis`, -> `Menge`) -> WERTE -> (2,0,"Bausatz in Bausatz Teil 2", "Musterteilbeschreibung", "23.5" ,1);Abfrage OK, 1 Zeile betroffen (0.00 sec)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> `description`, -> `hours`) -> VALUES -> (1,0,"First Kit labor","1.5");Abfrage OK, 1 Zeile betroffen (0,00 Sek.)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> ` description`, -> `hours`) -> VALUES -> (2,0,"Kit within kit labor 1","1.5");Abfrage OK, 1 Zeile betroffen (0.00 sec)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> `description`, -> `hours`) -> VALUES -> (2,0,"Kit within kit labor 2 ","1.5");Abfrage OK, 1 Zeile betroffen (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) -> SEPARATOR '||') FROM parts WHERE parts.kit_id =kits_table.id), -> (SELECT GROUP_CONCAT( -> CONCAT_WS('|', labor.id, labor.description) -> SEPARATOR '||') FROM labor WHERE labor.kit_id =kits_table.id) -> ) -> SEPARATOR '||||' -> ) as kits , -> GROUP_CONCAT(CONCAT_WS('|', parts.id, parts.name) SEPARATOR '|||') als Teile, -> GROUP_CONCAT(CONCAT_WS('|', labor.id, labor.description) SEPARATOR '| ||') als Arbeit -> FROM kits -> LEFT JOIN kits als 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. Reihe ***************** ******** id:1is_quote:0 Bausätze:2|||Bausatz im Bausatz|||2|Bausatz im Bausatz Teil 1||3|Bausatz im Bausatz Teil 2|||2|Bausatz im Bausatz Arbeit 1||3|Bausatz innerhalb von Bausatzarbeit 2 Teile:1|Erste Bausatzteilarbeit:1|Erste Bausatzarbeit1 Reihe im Satz (0,00 Sek.) 

AKTUALISIERUNG 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('|', labor. id, labor.description) -> SEPARATOR '||') FROM labor WHERE labor.kit_id =kits_table.id) -> ) -> SEPARATOR '||||' -> ) as kits, -> GROUP_CONCAT(DISTINCT CONCAT_WS( '|', parts.id, parts.name) SEPARATOR '|||') als Teile, -> GROUP_CONCAT(DISTINCT CONCAT_WS('|', labor.id, labor.description) SEPARATOR '|||') als Arbeit -> FROM kits -> 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 labour ON labor.kit_id =kits.id -> WHERE kits.id =1 -> GRUPPIEREN NACH kits.id\G**************************** 1. Reihe ************* ************ id:1is_quote:0 Bausätze:2|||Bausatz im Bausatz|||3|Bausatz im Bausatz Teil 1||4|Bausatz im Bausatz Teil 2|||3| Bausatz in Bausatz 1||4|Bausatz in Bausatz 2 Teile:1|Erster Bausatz Teil 1|||2|Erster Bausatz Teil 2 Arbeit:1|Erster Bausatz Arbeit 1|||2|Erster Bausatz Arbeit 21 Reihen in setzen (0,00 Sek.)