Portál AbcLinuxu, 10. května 2025 12:27

Dotaz: MySQL - převod sloupců v tabulce na řádky

18.7.2012 13:38 mirka
MySQL - převod sloupců v tabulce na řádky
Přečteno: 822×
Odpovědět | Admin
Ahoj, chtěla bych se zeptat, zda existuje v MySQL nějaký snadný postup jak z jedné tabulky udělat druhou tak, aby se mi záznamy v řádcích z té první zaznamenaly do druhé tabulky do jejich sloupců. Zkoušela jsem nějaké návody na netu pod hlavičkou pivot table, ale nemůžu se dobrat uspokojivého výsledku :/ Díky za rady ;)

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.7.2012 15:38 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: MySQL - převod sloupců v tabulce na řádky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Obecně nebo konkrétně? (jak konkrétně?)
Jedenkrát nebo opakovaně?
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
18.7.2012 16:07 mirka
Rozbalit Rozbalit vše Re: MySQL - převod sloupců v tabulce na řádky
no všude jsou strašně specifické návody, ale já bych potřebovala něco obecného a jednoduchého jako např.:

kniha       počet stran       autor

pejsek      20                      petr

kočka       90                      karel

šnek         50                      josef

a převést to na

informace       pejsek       kočka       šnek

počet stran     20              90            50

autor              petr           karel         josef

Tarmaq avatar 18.7.2012 16:18 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: MySQL - převod sloupců v tabulce na řádky
ufff proc to takhle potrebujes? Nestaci ti jen aby ten vystup z databaze byl na frontendu v nejake tabulce otoceny takto? Ikdyz by toto zrejme nejakym zpusobem s pouzitim information_schema atp. slo, nebude to pekne, budes mit porusene typy v jednotlivych sloupcich atd...

Takze me (nas) zajima k cemu to takto potrebujes?
Don't panic!
18.7.2012 16:28 mirka
Rozbalit Rozbalit vše Re: MySQL - převod sloupců v tabulce na řádky
Tak určitě si nakonec vystačím s otočením výstupu z databáze. Spíš mě zajímalo, jestli by to nešlo udělat v databázi. A přijde mi hrozně divné, že to nejde nijak jednoduše, když databáze jsou jinak tak magický nástroj :D
18.7.2012 16:53 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: MySQL - převod sloupců v tabulce na řádky
Ve velkých databázích to jde, říká se tomu pivot. Ale MySQL neumí spoustu daleko jednodušších věcí, takže tohle od ní nečekejte. Ale Google možná na dotaz "MySQL pivot" něco najde.
18.7.2012 17:09 mirka
Rozbalit Rozbalit vše Re: MySQL - převod sloupců v tabulce na řádky
Super, díky. To jsem potřebovala slyšet, že to MySQL neumí. Konečně můžu v klidu spát. :)
18.7.2012 20:02 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: MySQL - převod sloupců v tabulce na řádky
Někdo by řekl, že "MySQL to neumí" je univerzální odpověď, se kterou se málokdy spletete ;-)
Tarmaq avatar 20.7.2012 16:08 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: MySQL - převod sloupců v tabulce na řádky
"tabulka" v databazi neni totiz to same jako nejaka tabulka v html, jednotlive sloupce nejsou jen jakesi bunky obsahujici text.. kazdy takovy sloupec ma svoji hlavicku, typ, atp.

Ikdyz tu nejake navody jak tohoto docilit jsou, rozhodne bych to tak nedelal a otoceni o 90° bych provedl az na vystupu do html nebo kam to potrebujes..
Don't panic!
18.7.2012 22:11 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: MySQL - převod sloupců v tabulce na řádky
V MySQL to nejde „samo“, ale lze to udělat jen je třeba zvolit způsob, všechny jsou pracnější než „jednoduše“.
Nebo to lze udělat až na další vrstvě.
Jen na prohlížení může někdy stačit '\G' za příkazem.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
19.7.2012 17:16 Ivan Nový
Rozbalit Rozbalit vše Re: MySQL - převod sloupců v tabulce na řádky
V MYSQL použijet funkce GROUP_CONCAT takto:
SELECT 
    id, 
    GROUP_CONCAT(kniha, pocet_stran, autor) 
FROM 
    seznam 
GROUP BY 
    id;
popřípadě kombinujte s příkazem INSERT SELECT ... Do tabulky si musíte ale přidat pole id, výsledkem bude řetezec, který můžete parsovat do polí příkazu insert do druhé tabulky, nebo dotazu.
18.7.2012 16:39 Ivan
Rozbalit Rozbalit vše Re: MySQL - převod sloupců v tabulce na řádky
Odpovědět | | Sbalit | Link | Blokovat | Admin
MySQL nedalam, ale pivot je urcite soucast nejaky SQL stardartu (?ISO SQL 2003?).

Takhle se to dela v Oracle bez "PIVOT" clausule: http://www.adp-gmbh.ch/ora/sql/examples/pivot.html

A takhle s ni: http://www.adp-gmbh.ch/ora/sql/clauses/pivot_clause.html

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.