IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
no.good
Člen
Avatar
no.good:4.9.2013 8:26

Zdravím, potřeboval bych přetransformovat tabulku1 viz níže na pivot tabulku, která je uvedena pod ní. Je možné toto provést pomocí sql příkazů v MySQL? V podstatě to co je v pivot tabulce v obci je agregované hodnoty z tabulky1.Obec a hodnoty z tabulky1.Jmeno se převedou na název sloupce a hodnoty z Tabulka1.Cena jsou pak hodnotami této pivot_tabulky.
Předem díky za pomoc

Tabulka1:

+------+------+---------+-------+
| PK   | Jmeno| Obec    | Cena  |
+------+------+---------+-------+
|    1 | Bob  |Praha    |    75 |
|    2 | Bob  |Brno     |    77 |
|    3 | Bob  |Ostrava  |    78 |
|    4 | Bob  |Plzeň    |    80 |
|    5 | Sue  |Brno     |    90 |
|    6 | Sue  |Praha    |    97 |
|    7 | Sue  |Liberec  |    98 |
|    8 | Sue  |Písek    |    99 |
+------+------+---------+-------+

Pivot_tabulka:

-------------------------
|Obec    |  Bob  | Sue  |
------------------------
|Praha   |  75   | 97   |
|Brno    |  77   | 90   |
|Ostrava |  78   |      |
|Plzeň  |  80   |      |
|Liberec |       | 98   |
|Písek  |       | 99   |
Editováno 4.9.2013 9:30
 
Odpovědět
4.9.2013 8:26
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na no.good
David Hartinger:4.9.2013 9:33

Přijde mi dost nešikovné mít jako názvy sloupců jména, neznám tvůj Use Case, ale návrhově to vypadá jako chyba. Tabulky samozřejmě můžeš převést jen pomocí SQL dotazů, dá se totiž udělat něco jako:

INSERT INTO `tabulka` (sloupec1, sloupec 2) VALUES
(SELECT `sloupecX` AS `sloupec1`, `sloupecY` AS `sloupec2` FROM `tabulka2`)
Nahoru Odpovědět
4.9.2013 9:33
New kid back on the block with a R.I.P
Avatar
no.good
Člen
Avatar
no.good:4.9.2013 16:26

Ahoj, no jedná se normálně o to co bych normálně udělal v accessu, a myslím tím křížovou tabulku. Možná to z té dolní tabulky není zřejmé, ale má se jednat už o konečný výstup. Co se týká jmen, tak těch může být víc, takže takovéhle řešení mi moc nepomůže. SQL dotaz by měl být podobný tomu níže:

SELECT
Obec,
SUM(CASE Jmeno WHEN 'Bob' THEN Cena ELSE 0 END) AS Bob,
SUM(CASE Jmeno WHEN 'Sue' THEN Cena ELSE 0 END) AS Sue
FROM zkouskapivot
GROUP BY Obec

nicméně pokud bych vždycky přidal nové jméno, které zde ještě nemám uvedený, tak bych musel přidat i nový řádek s podmínkou a ještě k tomu zjišťovat, které jméno přibylo, což bych potřeboval, aby bylo automatické.

 
Nahoru Odpovědět
4.9.2013 16:26
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:4.9.2013 16:43

Možná ti to připadá jako nešikovné, ale představ si, že ti manažer přikáže, abys mu vytiskl tabulku výkonnosti jednotlivých prodejců v jednotlivých městech (nebo třeba letech) a ty máš k dispozici normalizovaná data.

Nahoru Odpovědět
4.9.2013 16:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Nahoru Odpovědět
4.9.2013 16:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na no.good
David Hartinger:4.9.2013 16:59

S novým jménem musíš hlavně přidat nový sloupec, proto se mi ta tabulka nelíbí :) jedním dotazem to určitě jde, ale bude dost hustý a nejsem v SQL tak sběhlý, abych ho z fleku napsal. Určitě to v nejhorším můžeš vybrat buď pro uživatele nebo pro město a jet to v cyklu.

Editováno 4.9.2013 16:59
Nahoru Odpovědět
4.9.2013 16:59
New kid back on the block with a R.I.P
Avatar
no.good
Člen
Avatar
no.good:11.9.2013 9:48

Díky za pomoc. To co jsem myslel, tak napsal Kit

 
Nahoru Odpovědět
11.9.2013 9:48
Avatar
jacobjhon374
Člen
Avatar
jacobjhon374:12.10.2013 15:47

Možná ti to připadá jako nešikovné, ale představ si, že ti manažer přikáže, abys mu vytiskl tabulku výkonnosti jednotlivých prodejců v jednotlivých městech a ty máš k dispozici normalizovaná data.....!

Nahoru Odpovědět
12.10.2013 15:47
Smile PleaZZzzzZZZzzz.....(Usman Malik)....!!!
Avatar
Kit
Tvůrce
Avatar
Odpovídá na jacobjhon374
Kit:12.10.2013 16:43

Neopisuj!

Nahoru Odpovědět
12.10.2013 16:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.