Jak se "zanořit" se SELECTem v MySQL   zodpovězená otázka

SQL

Dobrý den,

poradil by mi prosím někdo zkušenější jak vyřešit "učísnutí" dat v tabulce?

Mám v MySQL datovou tabulku, která obsahuje 3 sloupce (1=hodnota, 2=velikost, 3=symbol pro zgrupování)

dotazem :

SELECT Hodnota, SUM(Velikost)

FROM tabulka

WHERE Symbol = "1"

GROUP BY Hodnota

ORDER BY Hodnota DESC;

získám sice to co potřebuji ale jen pro symbol "1", háček je v tom, že v primární tabulce těchto symbolů je víc, ("2", "3",...) a já bych je potřeboval takto projít všechny a tyto dílčí výsledky nakonec sloučil do jedné výstupní tabulky kde klíčem spojení mezi nimi bude Hodnota.

Doufám že popis problému je alespoň trochu srozumitelný :-)

Výstupní tabulka by měla tedy vypadat asi takto:

|Hodnota|SumaVelikosti za hodnotu a symbol "1"|SumaVelikosti za hodnotu a symbol "2"|.. atd..

Budu moc rád za jakoukoliv radu vedoucí k cíli.

Petr

nahlásit spamnahlásit spam 0 odpovědětodpovědět

GROUP BY může mít víc sloupců, takže si to zgrupujte o Hodnota i Sloupec.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky za Vaši reakci.

To jsem zkoušel, funguje to ok, nicméně potíž je v tom,

že bych potřeboval dostat výsledek z grupování za každý symbol do zvláštního sloupce, což mi tohle neudělá.

Přiznám se, že zatím nevím, resp. nedokážu si ani představit jak k tomu to SQLko donutit.

Když bych se snažil ten algoritmus popsat slovy, tak :

vezmi první symbol z podkladové tabulky a udělej v rámci něj výše uvedenou grupaci, to mám a je ok ale dál výsledek vlož do řekněme nové tabulky, kde po "prvním průchodu" bude jen Hodnota a Velikost.

Vezmi další symbol, udělej to stejné a zase výsledek přidej do dalšího nového sloupce této tabulky s tím, že pojítkem mezi jednotlivými výsledky bude primární klíč Hodnota. Takto bych chtěl projet celou podkladovou tabulku pro každý symbol. Nevím nakolik je tento postup SQL programátorsky správně a hlavně jak to napsat v kódu.

Budu moc rád za případné nasměrování, případně korekci ve směru kterým se na to mám vydat pokud to co píšu je algoritmicky blbost.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dostat výsledek do každého sloupce je obecně v SQL problém, SQL není děláno na dynamický počet sloupců.

Vytáhnul bych si to na klientskou aplikaci a do potřebné struktury to předělal až v té aplikaci.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Díky moc za Vaši reakci !

Pomohla mi víc než na první pohled se může zdát.

Někdy je potřeba zavčas zjistit kdy přestat bádat a "plýtvat časem" a raději zvolit jinou cestu, která taky vede k cíli.

Protože jsem v SQL celkem nováčkem, nedokážu tohle ještě posoudit a nechal jsem se strhnout prvním okouzlením. Protože jsem dosud na žádné elegantní SQL řešení taky nepřišel, objevily se i myšlenky typu tak si to holt budu muset přelouskat v .Netu sám :-), a ejhle, i zkušený člověk jako Vy to vidí podobně. To mě opravdu potěšilo, protože ve skrytu duše jsem si pořád příznám se myslel, že SQL to přece zvládne když přeženu nějakou "fintou" elegantně a rychle.

Ještě jednou díky za Váš čas a názor.

Ať se daří !

Pj

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback