Autor | Zpráva | ||
---|---|---|---|
VaKvas Profil |
#1 · Zasláno: 14. 2. 2014, 10:58:30
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 |
#2 · Zasláno: 14. 2. 2014, 12:26:13
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 |
#3 · Zasláno: 14. 2. 2014, 19:18:21
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 |
#5 · Zasláno: 14. 2. 2014, 21:17:34
Diky.
Napadlo me ještě, jestli by to neslo prespat přes JOINy.... co myslite? Diky ! |
||
Kajman Profil |
#6 · Zasláno: 14. 2. 2014, 22:18:02
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 WHERE datzdanpln BETWEEN '2013-03-01' AND '2013-03-31' AND mrp_cislo = cislo_zak 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 ! |
||
Časová prodleva: 10 let
|
0