Autor Zpráva
VaKvas
Profil
Zdravím a prosím o radu. Mam takovy dotaz:

SELECT 'id, name, branches_id, since, to,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 1 AND YEAR(datzdanpln) = '.$year.'-1 AND mrp_cislo = cislo_zak) AS lprosinec,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 1 AND YEAR(datzdanpln) = '.$year.' AND mrp_cislo = cislo_zak) AS leden,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 2 AND YEAR(datzdanpln) = '.$year.' AND mrp_cislo = cislo_zak) AS unor,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 3 AND YEAR(datzdanpln) = '.$year.' AND mrp_cislo = cislo_zak) AS brezen,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 4 AND YEAR(datzdanpln) = '.$year.' AND mrp_cislo = cislo_zak) AS duben,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 5 AND YEAR(datzdanpln) = '.$year.' AND mrp_cislo = cislo_zak) AS kveten,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 6 AND YEAR(datzdanpln) = '.$year.' AND mrp_cislo = cislo_zak) AS cerven,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 7 AND YEAR(datzdanpln) = '.$year.' AND mrp_cislo = cislo_zak) AS cervenec,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 8 AND YEAR(datzdanpln) = '.$year.' AND mrp_cislo = cislo_zak) AS srpen,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 9 AND YEAR(datzdanpln) = '.$year.' AND mrp_cislo = cislo_zak) AS zari,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 10 AND YEAR(datzdanpln) = '.$year.' AND mrp_cislo = cislo_zak) AS rijen,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 11 AND YEAR(datzdanpln) = '.$year.' AND mrp_cislo = cislo_zak) AS listopad,
                       (SELECT SUM(sum) FROM mrp WHERE MONTH(datzdanpln) = 12 AND YEAR(datzdanpln) = '.$year.' AND mrp_cislo = cislo_zak) AS prosinec
                    

a potrebuji nad timto získat SUM(leden) .....
Jak na to prosim?
SUM nezna aliasove sloupce..

Diky!
Kajman
Profil
Můžete to celé obalit a udělat dotaz na tím výsledkem.
SELECT Sum(leden)
FROM   (SELECT (SELECT Sum(`sum`)
                FROM   mrp) leden
        FROM   DUAL) t  
VaKvas
Profil
Omlouvam se, moc tomu nerozumim..
Praxe je takova.. pouzivam NETTE a jiz mam grid s vytvořenou SELECTION .. viz dotaz nahore.. a k tomu tam potrebuju dostat SUM sloupec...

Ted ted nevim, jak to aplikovat a jaky vby byl výsledek...

Mohu požádat o pomoc a podrobnejsi vysvetleni?

Predem moc dekuji !
Kajman
Profil
Pokud potřebujete všechny řádky + navíc 1 řádek se součty, tak si doprogramujte grid, aby uměl v případě potřeby jednotlivé řádky zadaných sloupců sčítat a na konci vypsat sumu. Je také možné použít group by with rollup na straně databáze, ale to už víte a dotaz to znepřehledňuje.
VaKvas
Profil
Diky.
Napadlo me ještě, jestli by to neslo prespat přes JOINy.... co myslite?

Diky !
Kajman
Profil
Težko říct, když tu je jen začátek dotazu. Pokud to je pomalé, tak pro začátek zkuste v těch součtech upravit podmínky typu
WHERE MONTH(datzdanpln) = 3 AND YEAR(datzdanpln) = 2013 AND mrp_cislo = cislo_zak
na
WHERE datzdanpln BETWEEN '2013-03-01' AND '2013-03-31' AND mrp_cislo = cislo_zak
Při dvousloupcovém indexu (mrp_cislo, datzdanpln) by to mělo být výrazně svižnější.

Jinak jen s pomocí joinů se Vám asi nepodaří přetransformovat řádková data takto do sloupců - to je spíše úkol pro šikovný grid.
VaKvas
Profil
Dotaz je tu cely, ale ted problém ani není v rychlosti, ale spis v ziskani tech dat.
Prakticky jde o dve tabulky... zakazky a mrp (ucetnictvi)

Prochazim zakazky a ke kazde vypisu soucet vystavenych faktur za mesic.

Napada me jit obracene.. projit ucetnictvi a k tomu joinovat uzakazky, ale pogtrebuju i ty, co se nefakturovali...

Napada Vas něco? Jak to získat?

Moc dekuji !

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0