Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL:zagnieżdżony GROUP_CONCAT

Wypróbuj:

mysql> SELECT -> GROUP_CONCAT( -> CONCAT_WS('|||', 0, 1, -> GROUP_CONCAT(CONCAT_WS('|', 2, 3) SEPARATOR '||') -> ) -> ) `test`;ERROR 1111 (HY000):Nieprawidłowe użycie funkcji grupy mysql> SELECT -> GROUP_CONCAT( -> CONCAT_WS('|||', 0, 1, -> (SELECT GROUP_CONCAT(CONCAT_WS('|', 2, 3) SEPARATOR '||')) -> ) -> ) `test`;+-------------+| test |+-----------------+| 0|||1|||2|3 |+-----------------+1 wiersz w zestawie (0,00 s) 

AKTUALIZUJ

Jedna możliwa opcja:

mysql> DROP TABLE IF EXISTS `parts`, `labor`, `kits`;Query OK, wpływ 0 wierszy (0,00 sek)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, -> PRIMARY KEY (`id`), -> UNIQUE KEY `id_UNIQUE` (`id`), -> KEY `KIT` (` kit_id`) -> );Query OK, dotyczy 0 wierszy (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', -> KLUCZ PODSTAWOWY (` id`), -> UNIQUE KEY `id_UNIQUE` (`id`), -> KEY `KIT` (`kit_id`) -> );Query OK, dotyczy 0 wierszy (0,00 s) mysql> CREATE TABLE `parts` ( -> `id` int(11) NIE 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', -> `ilość` varchar(45) NOT NULL, -> PRIMARY KEY (`id`), -> UNIQUE KEY `id_UNIQUE` (` id`), -> KLUCZ `KIT` (`kit_id`) -> );Zapytanie OK, brak wierszy (0,00 s) mysql> INSERT INTO `kits` -> (`id`, -> `kit_id`, -> `is_quote`, -> `name`, -> `description`, -> `ility`) -> VALUES -> (1,0,0,"Main Kit", "Sample Description",1);Zapytanie OK , dotyczy 1 wiersza (0,00 s) mysql> INSERT INTO `kits` -> (`id`, -> `kit_id`, -> `is_quote`, -> `name`, -> `description`, -> `ility `) -> WARTOŚCI -> (2,1,0,"Zestaw w zestawie", "Przykładowy opis",1);Zapytanie OK, wpływ na 1 wiersz (0,00 s)mysql> INSERT INTO `parts` -> (`kit_id `, -> `jest_wycena`, -> `nazwa`, -> `opis`, -> `cena_sprzedaży`, -> `ilość`) -> WARTOŚCI -> (1,0, "Pierwszy zestaw części", "Opis części","23.5",1);Zapytanie OK, wpływ na 1 wiersz (0,00 s)mysql> INSERT INTO `parts ` -> (`kit_id`, -> `jest_wycena`, -> `nazwa`, -> `opis`, -> `cena_sprzedaży`, -> `ilość`) -> WARTOŚCI -> (2,0,"Zestaw w zestawie część 1", "Przykładowy opis części","23.5",1);Zapytanie OK, dotyczy 1 wiersza (0,00 s)mysql> INSERT INTO `części` -> (`kit_id`, -> `is_quote`, -> `nazwa`, -> `opis`, -> `cena_sprzedaży`, -> `ilość`) -> WARTOŚCI -> (2,0,"Zestaw w zestawie część 2", "Przykładowy opis części","23,5" ,1);Zapytanie OK, wpływ na 1 wiersz (0,00 s)mysql> INSERT INTO `praca` -> (`kit_id`, -> `is_quote`, -> `description`, -> `hours`) -> WARTOŚCI -> (1,0,"First Kit work","1.5");Zapytanie OK, wpływ na 1 wiersz (0,00 s)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> ` opis`, -> `godziny`) -> WARTOŚCI -> (2,0,"Zestaw w obrębie zestawu 1","1,5");Zapytanie OK, dotyczy 1 wiersza (0,00 sec)mysql> INSERT INTO `labor` -> (`kit_id`, -> `is_quote`, -> `description`, -> `hours`) -> VALUES -> (2,0,"Kit w zestawie praca 2 ","1.5");Zapytanie OK, wpływ na 1 wiersz (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('|', part.id, part.name) -> SEPARATOR '||') FROM parts WHERE parts.kit_id =kits_table.id), -> (SELECT GROUP_CONCAT( -> CONCAT_WS('|', robocizna.id, robocizna.description) -> SEPARATOR '||') Z robocizny GDZIE robocizna.kit_id =kits_table.id) -> ) -> SEPARATOR '||||' -> ) jako zestawy , -> GROUP_CONCAT(CONCAT_WS('|', part.id, part.name) SEPARATOR '|||') jako części, -> GROUP_CONCAT(CONCAT_WS('|', labor.id, labor.description) SEPARATOR '| ||') jako robocizna -> Z zestawów -> LEFT JOIN zestawy jako zestaw_tabeli ON zestawy_tabela .kit_id =kits.id -> LEWE ZEWNĘTRZNE POŁĄCZENIE części na części.kit_id =kits.id -> LEWE ZEWNĘTRZNE POŁĄCZENIE praca na labor.kit_id =kits.id -> GDZIE kits.id =1 -> GRUPUJ WG kits.id\ G**************************** 1. rząd ******************** ******** id:1is_quote:0 zestawy:2|||Zestaw w zestawie|||2|Zestaw w zestawie, część 1||3|Zestaw w zestawie, część 2|||2|Zestaw w zestawie. 1||3|Pierwszy zestaw robocizny 2 części:1|Pierwszy zestaw Część robocizna:1|Pierwszy zestaw robocizny1 rząd w zestawie (0,00 s) 

AKTUALIZACJA 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 części WHERE parts.kit_id =kits_table.id), -> (SELECT GROUP_CONCAT(DISTINCT -> CONCAT_WS('|', praca. id, opis.pracy) -> SEPARATOR '||') Z roboci GDZIE robocizna.id_id =zestaw_tabeli.id) -> ) -> SEPARATOR '||||' -> ) jako zestawy, -> GROUP_CONCAT(DISTINCT CONCAT_WS( '|', parts.id, parts.name) SEPARATOR '|||') jako części, -> GROUP_CONCAT(DISTINCT CONCAT_WS('|', robocizna.id, robocizna.description) SEPARATOR '|||') jako robocizna -> Z zestawów -> zestawy LEFT JOIN jako kits_table ON kits_table.kit_id =kits.id -> LEFT OUTER JOIN części ON parts.kit_id =kits.id -> LEFT OUTER JOIN praca na labor.kit_id =kits.id -> GDZIE kits.id =1 -> GRUPA WG kits.id\G****************************** 1. rząd *************** ************ id:1is_quote:0 zestawy:2|||Zestaw w zestawie|||3|Zestaw w zestawie, część 1||4|Zestaw w zestawie, część 2|||3| Praca zestawu w zestawie 1||4|Robotnica w ramach zestawu, 2 części:1|Pierwszy zestaw, część 1|||2|Pierwszy zestaw, część 2, robocizna:1|Pierwszy zestaw robocizna 1|||2|Pierwszy zestaw, część robocizna, 21 rzędów w ustaw (0,00 s) 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zoptymalizuj zapytanie o powolny ranking

  2. Eksportuj bazę danych MySQL/MariaDB

  3. Spotkanie krytycznego błędu podczas wykonywania polecenia MySQL VB

  4. MySql pobiera rekordy lub dane według dziennych, tygodniowych, miesięcznych i rocznych

  5. Nieznany początkowy indeks zestawu znaków '255' odebrany z serwera