Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

sum po vise tablica

[es] :: MySQL :: sum po vise tablica

[ Pregleda: 3243 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
...118.24-dsl.net.metronet.hr.



+1 Profil

icon sum po vise tablica29.12.2009. u 07:40 - pre 173 meseci
Pozdrav.


Imam problema sa upitom. U 3 tablice su mi podaci o ulazima i izlazima robe. Dakle aprimke, aracuni, anormativi i imam tablicu artikli.
Ono sto trebam je SUM(aprimke.kolicina) - SUM(racuni.kolicina) - SUM(anormativi.kolicina) po svim artiklima GROUP BY artikli.artikl_id


Ovo ne valja ali je najbolje sto mogu :

Code:


SELECT artikli.naziv, artikli.sifra, 
SUM(aprimke.kolicina - anormativ.kolicina - aracuni.kolicina) as kol_total
FROM artikli
INNER JOIN aprimke ON aprimke.artikli_artikl_id = artikli.artikl_id
INNER JOIN aracuni ON aracuni.artikli_artikl_id = artikli.artikl_id
INNER JOIN anormativ ON anormativ.artikli_artikl_id = artikli.artikl_id
GROUP BY artikli.artikl_id




Ovo ne radi zbog joina kolko ja mogu da skuzim ali si ne mogu pomoci... Nesto fali ali ne znam sta :p..


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: sum po vise tablica29.12.2009. u 08:40 - pre 173 meseci
za neke stvari je mysql keva, al za neke je gluuuuuuuuuuuuuuuuuuup .. posebno mu optimizer po nekad nije jaca strana ...

umesto

Code:

SUM(aprimke.kolicina - anormativ.kolicina - aracuni.kolicina)


ovo moze da bude i do 10 puta brze !! (nekad nece biti brze uopste, ali vrlo cesto hoce)
Code:

SUM(aprimke.kolicina) - SUM(anormativ.kolicina) - SUM(aracuni.kolicina)


e sad .. sam upit .. ja se u knjigovodstvo razumem malo manje nego u strikanje (za strikanje znam da postoje neki klot i neki frket) tako da nemam pojma sta racunas ali posto koristis INNER JOIN, ako u bilo kojoj tabeli nema nekog artikla, neces ga imati ni u razultatu ... dakle ako u tabeli anormativ nemas artikli_artikl_id za vrednost 10, nebitno sto postoji i u artikli i u aprimke i u aracuni, nece se pojaviti u ovom izvestaju.

dakle:


Code:

mysql> select * from artikli;
+-----------+-------+-------+
| artikl_id | naziv | sifra |
+-----------+-------+-------+
|         1 | pera  |     1 | 
|         2 | zika  |     2 | 
|         3 | mika  |     3 | 
+-----------+-------+-------+
3 rows in set (0.00 sec)

mysql> select * from aprimke;
+-------------------+----------+
| artikli_artikl_id | kolicina |
+-------------------+----------+
|                 1 |        5 | 
|                 1 |        5 | 
|                 1 |        7 | 
|                 2 |        5 | 
+-------------------+----------+
4 rows in set (0.00 sec)

mysql> select * from aracuni;
+-------------------+----------+
| artikli_artikl_id | kolicina |
+-------------------+----------+
|                 1 |        5 | 
|                 1 |        5 | 
|                 1 |        7 | 
|                 2 |        8 | 
|                 3 |        5 | 
|                 3 |      233 | 
+-------------------+----------+
6 rows in set (0.00 sec)

mysql> select * from anormativ;
+-------------------+----------+
| artikli_artikl_id | kolicina |
+-------------------+----------+
|                 1 |        5 | 
|                 1 |        7 | 
|                 2 |        8 | 
+-------------------+----------+
3 rows in set (0.00 sec)

mysql> -- iz upita izbacimo group by i sume zamenimo sa vrednostima da bi videli nad kojim setom radimo
mysql> SELECT artikli.naziv, artikli.sifra, aprimke.kolicina,anormativ.kolicina,aracuni.kolicina
    -> FROM artikli
    -> INNER JOIN aprimke ON aprimke.artikli_artikl_id = artikli.artikl_id
    -> INNER JOIN aracuni ON aracuni.artikli_artikl_id = artikli.artikl_id
    -> INNER JOIN anormativ ON anormativ.artikli_artikl_id = artikli.artikl_id
    -> ;
+-------+-------+----------+----------+----------+
| naziv | sifra | kolicina | kolicina | kolicina |
+-------+-------+----------+----------+----------+
| pera  |     1 |        5 |        5 |        5 | 
| pera  |     1 |        5 |        7 |        5 | 
| pera  |     1 |        5 |        5 |        5 | 
| pera  |     1 |        5 |        7 |        5 | 
| pera  |     1 |        7 |        5 |        5 | 
| pera  |     1 |        7 |        7 |        5 | 
| pera  |     1 |        5 |        5 |        5 | 
| pera  |     1 |        5 |        7 |        5 | 
| pera  |     1 |        5 |        5 |        5 | 
| pera  |     1 |        5 |        7 |        5 | 
| pera  |     1 |        7 |        5 |        5 | 
| pera  |     1 |        7 |        7 |        5 | 
| pera  |     1 |        5 |        5 |        7 | 
| pera  |     1 |        5 |        7 |        7 | 
| pera  |     1 |        5 |        5 |        7 | 
| pera  |     1 |        5 |        7 |        7 | 
| pera  |     1 |        7 |        5 |        7 | 
| pera  |     1 |        7 |        7 |        7 | 
| zika  |     2 |        5 |        8 |        8 | 
+-------+-------+----------+----------+----------+
19 rows in set (0.00 sec)

mysql> 


ako je to ono sto hoces - super ... ali ono sto je verovatnije da ti treba je
Code:

mysql> SELECT artikli.naziv, artikli.sifra, aprimke.kolicina,anormativ.kolicina,aracuni.kolicina
    -> FROM artikli
    -> LEFT JOIN aprimke ON aprimke.artikli_artikl_id = artikli.artikl_id
    -> LEFT JOIN aracuni ON aracuni.artikli_artikl_id = artikli.artikl_id
    -> LEFT JOIN anormativ ON anormativ.artikli_artikl_id = artikli.artikl_id
    -> ;
+-------+-------+----------+----------+----------+
| naziv | sifra | kolicina | kolicina | kolicina |
+-------+-------+----------+----------+----------+
| pera  |     1 |        5 |        5 |        5 | 
| pera  |     1 |        5 |        7 |        5 | 
| pera  |     1 |        5 |        5 |        5 | 
| pera  |     1 |        5 |        7 |        5 | 
| pera  |     1 |        5 |        5 |        7 | 
| pera  |     1 |        5 |        7 |        7 | 
| pera  |     1 |        5 |        5 |        5 | 
| pera  |     1 |        5 |        7 |        5 | 
| pera  |     1 |        5 |        5 |        5 | 
| pera  |     1 |        5 |        7 |        5 | 
| pera  |     1 |        5 |        5 |        7 | 
| pera  |     1 |        5 |        7 |        7 | 
| pera  |     1 |        7 |        5 |        5 | 
| pera  |     1 |        7 |        7 |        5 | 
| pera  |     1 |        7 |        5 |        5 | 
| pera  |     1 |        7 |        7 |        5 | 
| pera  |     1 |        7 |        5 |        7 | 
| pera  |     1 |        7 |        7 |        7 | 
| zika  |     2 |        5 |        8 |        8 | 
| mika  |     3 |     NULL |     NULL |        5 | 
| mika  |     3 |     NULL |     NULL |      233 | 
+-------+-------+----------+----------+----------+
21 rows in set (0.00 sec)

mysql> 


to jest
Code:

mysql> SELECT artikli.naziv, artikli.sifra, 
    -> SUM(aprimke.kolicina)-SUM(anormativ.kolicina)-SUM(aracuni.kolicina) as stagod
    -> FROM artikli
    -> LEFT JOIN aprimke ON aprimke.artikli_artikl_id = artikli.artikl_id
    -> LEFT JOIN aracuni ON aracuni.artikli_artikl_id = artikli.artikl_id
    -> LEFT JOIN anormativ ON anormativ.artikli_artikl_id = artikli.artikl_id
    -> GROUP BY artikli.artikl_id
    -> ;
+-------+-------+--------+
| naziv | sifra | stagod |
+-------+-------+--------+
| pera  |     1 |   -108 | 
| zika  |     2 |    -11 | 
| mika  |     3 |   NULL | 
+-------+-------+--------+
3 rows in set (0.00 sec)

mysql> 


gde pretpostavljam da zelis da ako fali nesto dobijes null - posto to znaci gresku (fali ti negde neki upis), no, mozes i to da sredis sa
Code:

mysql> SELECT artikli.naziv, artikli.sifra, 
    -> SUM(COALESCE(aprimke.kolicina,0))-SUM(COALESCE(anormativ.kolicina,0))-SUM(COALESCE(aracuni.kolicina,0)) as stagod
    -> FROM artikli
    -> LEFT JOIN aprimke ON aprimke.artikli_artikl_id = artikli.artikl_id
    -> LEFT JOIN aracuni ON aracuni.artikli_artikl_id = artikli.artikl_id
    -> LEFT JOIN anormativ ON anormativ.artikli_artikl_id = artikli.artikl_id
    -> GROUP BY artikli.artikl_id
    -> ;
+-------+-------+--------+
| naziv | sifra | stagod |
+-------+-------+--------+
| pera  |     1 |   -108 | 
| zika  |     2 |    -11 | 
| mika  |     3 |   -238 | 
+-------+-------+--------+
3 rows in set (0.00 sec)

mysql> 

ovde ce za svaku nepostojecu vrednost da podrazumeva 0

nadam se da je jasno
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: sum po vise tablica29.12.2009. u 08:43 - pre 173 meseci
moguce da sam potpuno promasio sta ti tacno treba .. tako da ako nije to to - napisi tacno sta hoces da dobijes pa da nabudzimo upit :)
 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
...118.24-dsl.net.metronet.hr.



+1 Profil

icon Re: sum po vise tablica29.12.2009. u 09:23 - pre 173 meseci
E hvala na iscrpnom odgovoru ali ne pomaze mi bas :p.

Ajmo da probamo ovako. U aprimka su mi upisani svi ulazi za sve artikle koji su zaprimljeni. U aracuni su mi sve stavke po svim racunima izlaznim a u anormativi su mi svi izlazi po normativima.

Ako idemo ovako:

Code:




select sum(aprime.kolicina) from aprimke where artikli_artikl_id = 14

select sum(aracuni.kolicina) from aracuni where artikli_artikl_id = 14

select sum(anormativ.kolicina) from anormativ where artikli_artikl_id = 14





sad imam da je:
sum(aprimke.kolicina) = 197
sum(aracuni.kolicina) = 32
sum(aprimke.kolicina) = 38

aprimke.kolicina - anormativ.kolicina - aracuni.kolicina = 127


i to stima


ako idem sa ovim tvojim, ili mojim kodom dobijema da je SUM(aprimke.kolicina - anormativ.kolicina - aracuni.kolicina) = 79585


zasto??? nemam pojma.

ovako:

broj zapisa gdje je aprimke.artikli_artikl_id = 14 je 10
broj zapisa gdje je aracuni.artikli_artikl_id = 14 je 27
broj zapisa gdje je anormativ.artikli_artikl_id = 14 je 18






kad mu napisem ovo:

Code:

SELECT artikli.naziv, artikli.sifra,
sum(aprimke.kolicina) AS p_kol,
sum(aracuni.kolicina) AS r_kol,
sum(anormativ.kolicina) AS n_kol
FROM artikli
LEFT JOIN aprimke ON aprimke.artikli_artikl_id = artikli.artikl_id
LEFT JOIN aracuni ON aracuni.artikli_artikl_id = artikli.artikl_id
LEFT JOIN anormativ ON anormativ.artikli_artikl_id = artikli.artikl_id
WHERE artikli.artikl_id = 14


dobijem :

p_kol = 95742 --> treba biti 197
r_kol = 5760 --> treba biti 32
n_kol = 10260 --> treba biti 38




ne kuzim kako i zasto
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
79.101.206.*

Sajt: www.baze-podataka.net


+4 Profil

icon Re: sum po vise tablica29.12.2009. u 13:06 - pre 173 meseci
ne znam da li ovo prolazi u MySQL-u
Code:
SELECT SUM(kol)
  FROM (SELECT SUM(aprime.kolicina) AS kol FROM aprimke WHERE artikli_artikl_id = 14
         UNION ALL
        SELECT -SUM(aracuni.kolicina) FROM aracuni WHERE artikli_artikl_id = 14
         UNION ALL
        SELECT -SUM(anormativ.kolicina) FROM anormativ WHERE artikli_artikl_id = 14
       ) AS u

"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: sum po vise tablica29.12.2009. u 13:39 - pre 173 meseci
e fino, prolazi.. hvala

daj mi samo molim te reci kako da nastavim :p.. trebam jos podataka iz artikli .... trebam neki join da povicem artikli.naziv i sifru i to

i group i to
HVALA!!
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: sum po vise tablica29.12.2009. u 13:53 - pre 173 meseci
chachka, upit je sintaksno validan sto se tice mysql-a .. al mora malo da se prosiri

danko, ja spominjo neko strikanje .. "izlazi po normativima" :D :D :D ... zacrvcinger na cvicanglama ... sta ja znam sta je normativ ...

sto napisa chachka ... pa da malo prosirimo ..

Code:

mysql> select 
    -> artikli.naziv, artikli.sifra,
    -> (select sum(aprimke.kolicina) as A from aprimke where artikli_artikl_id = artikli.artikl_id ) -  
    -> (select sum(aracuni.kolicina) as B from aracuni where artikli_artikl_id = artikli.artikl_id ) - 
    -> (select sum(anormativ.kolicina) as C from anormativ where artikli_artikl_id = artikli.artikl_id) as X
    -> from 
    -> artikli;
+-------+-------+------+
| naziv | sifra | X    |
+-------+-------+------+
| pera  |     1 |  -12 | 
| zika  |     2 |  -11 | 
| mika  |     3 | NULL | 
+-------+-------+------+
3 rows in set (0.00 sec)



to ce da radi tacno to sto si hteo


 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: sum po vise tablica29.12.2009. u 13:59 - pre 173 meseci
radi radi... samo..... ako jednog artikla nema u recimo anormativi onda ne dobijem rezultat.

moze dakle da jedan art bude samo u aprimkama recimo.. ili u aprimkama i anormativima....


evo, jos samo da to rijesite



HVALA!!
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: sum po vise tablica29.12.2009. u 14:03 - pre 173 meseci
imas primer od malopre ... moras da koristis COALESCE() funkciju dakle ..

Code:

select 
artikli.naziv, artikli.sifra,
coalesce((select sum(aprimke.kolicina) as A from aprimke where artikli_artikl_id = artikli.artikl_id ), 0) -  
coalesce((select sum(aracuni.kolicina) as B from aracuni where artikli_artikl_id = artikli.artikl_id ), 0) - 
coalesce((select sum(anormativ.kolicina) as C from anormativ where artikli_artikl_id = artikli.artikl_id), 0) as X
from  artikli;

 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: sum po vise tablica29.12.2009. u 14:05 - pre 173 meseci
ma bravo.

Morat cu naucit te stvari, puno hvala na pomoci. Sve najbolje želim u novoj g.

 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: sum po vise tablica05.01.2010. u 19:29 - pre 173 meseci
Opet zapeo.. Na ovo sve trebam dodat sljedece.

Prosjecnu nabavnu cijenu iz aprimke


imamo:

1. aprimke.nabavnacijena * aprimke.kolicina where aprimke.artikli_artikl_id = artikli.artikl_id
2. aprimke.nabavnacijena * aprimke.kolicina where aprimke.artikli_artikl_id = artikli.artikl_id
3. aprimke.nabavnacijena * aprimke.kolicina where aprimke.artikli_artikl_id = artikli.artikl_id
4. aprimke.nabavnacijena * aprimke.kolicina where aprimke.artikli_artikl_id = artikli.artikl_id
.....
...
..


i onda sum(rezultati) i onda / sa sum(kolicina) gdje je aprimke.artikli_artikl_id = artikli.artikl_id





 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: sum po vise tablica06.01.2010. u 10:10 - pre 173 meseci
ne kontam .. imas ovo:

Code:

select 
artikli.naziv, artikli.sifra,
coalesce((select sum(aprimke.kolicina) as A from aprimke where artikli_artikl_id = artikli.artikl_id ), 0) -  
coalesce((select sum(aracuni.kolicina) as B from aracuni where artikli_artikl_id = artikli.artikl_id ), 0) - 
coalesce((select sum(anormativ.kolicina) as C from anormativ where artikli_artikl_id = artikli.artikl_id), 0) as X
from  artikli;


dakle to ce ti vratiti naziv, sifru i (a-b-c) (sta god to a-b-c bilo).

el odavde hoces da izvadis neki prosek ili ??

ako pricamo o potpuno novom upitu .. onda .. da bi izvadio prosecnu nabavnu cenu imas

Code:

select artikl_id,  sum(nabavnacena)/count(*) as prosecnacena from tabela group by artikl_id;


ne kontam sta radis sa ovim mnozenjima .... osim ako mozda hoces da izracunas prosecnu cenu tako sto racunas cenu pojedinacnog artikla a onda bi to bilo nesto tipa


Code:

select artikl_id,  sum(nabavnacena*kolicina)/sum(kolicina) as prosecnacena from tabela group by artikl_id;


 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: sum po vise tablica06.01.2010. u 15:17 - pre 173 meseci
Code:

select sum(nabavnacena*kolicina)/sum(kolicina) as prosecnacena from tabela group by artikl_id;



e to je to.. Hvala!
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: sum po vise tablica06.01.2010. u 15:36 - pre 173 meseci
super sto sam "ubo resenje" ... obzirom na to kako postavljas pitanje morao sam da se uvatim za prstem da pretpostavim sta hoces :D ... no ne pisem ovo zbog toga ... meni nije problem da pomognem sa tu i tamo nekim upitom, vise vremena potrosim na mnogo beskorisnije stvari, ali ako se vratimo onoj prici sa pecanjem i ribom .. ostaces ti nama sutra gladan posto ne mozes da ocekujes da ce uvek neko da bude tu da te drzi za ruku. Ovo je bio vrlo jednostavan upit, ma koliko ces za tako jednostavan upit naci nekoga da ti "resi problem umesto tebe", bilo bi mnogo korisnije za tebe "da naucis da pecas", osim naravno ako ovo sto sada radis nije neki seminarski koji ces sad da odradis i vise nikad se u zivotu neces baviti bazama vec planiras da budes neki "manager", "agroekonom" i slicno ... onda uzmi tih par ribica da ti prodje frka i nastavi svojim putem ...

zo .. procitaj:

http://dev.mysql.com/doc/refman/5.1/en/select.html
http://dev.mysql.com/doc/refman/5.1/en/join.html
http://dev.mysql.com/doc/refman/5.1/en/union.html

tu sve zajedno nemas sat vremena citanja ... a onda nadji/ukradi/kupi nesto poput: http://www.amazon.co.uk/SQL-My...&qid=1262792106&sr=1-4

veruj mi - isplatice se

 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: sum po vise tablica17.01.2010. u 15:34 - pre 172 meseci
Ej bok. Evo mene opet, lol. Ajd pomagajte.

Trebam COUNT( razlicitih dana ) u odredenom vremenskom periodu

npr.

SELECT COUNT(racuni.datum) FROM `1000_racuni` as racuni WHERE racuni.popust <> 0 AND DATE(racuni.datum) >= DATE('2010-01-01') AND DATE(racuni.datum) < DATE(Format(dat1, "yyyy-MM-dd") GROUP BY DATE(racuni.datum)

ovo ne valja naravno.


vidi se sta dobijem. count za svaki datum posebno. meni bi trebalo kolko ima razlicitih datuma.

ne mogu skuzit kako napisat, gledam one BIT_COUNT ovo ono.... ne mogu sam :p... Bogdane pomagaj :p


SELECT COUNT((SELECT DAY(racuni.datum) FROM `1000_racuni` as ra GROUP BY DATE(racuni.datum))) FROM `1000_racuni`
ovo ne valja (nije ni cudo)


Code:

SELECT
COALESCE((SELECT sum(aprimke.mp_cijena * aprimke.kolicina) as aprimke FROM " & skl & "_aprimke AS aprimke INNER JOIN " & skl & "_primke AS primke ON aprimke.primke_primka_id = primke.primka_id
WHERE DATE(primke.timest) >= DATE('2010-01-01') AND DATE(primke.timest) < DATE('" & Format(Datum1, "yyyy-MM-dd") & "')),0) AS donos_primke,

COALESCE((SELECT sum(aracuni.kolicina * (aracuni.cijena - (aracuni.cijena * (aracuni.popust / 100)))) as aracuni FROM " & skl & "_aracuni AS aracuni INNER JOIN " & skl & "_racuni AS racuni ON aracuni.racuni_racun_id = racuni.racun_id
WHERE DATE(racuni.datum) >= DATE('2010-01-01') AND DATE(racuni.datum) < DATE('" & Format(Datum1, "yyyy-MM-dd") & "')),0) AS donos_racuni,

COALESCE((SELECT sum(anivelacija.kolicina * (anivelacija.scijena - anivelacija.ncijena)) as anivelacija FROM " & skl & "_anivelacija AS anivelacija INNER JOIN " & skl & "_nivelacije AS nivelacije ON anivelacija.nivelacije_nivelacije_id = nivelacije.nivelacije_id
WHERE DATE(nivelacije.timest) >= DATE('2010-01-01') AND DATE(nivelacije.timest) < DATE('" & Format(Datum1, "yyyy-MM-dd") & "')),0) as donos_nivelacije,

COALESCE((SELECT sum((aracuni.kolicina * (aracuni.cijena - (aracuni.cijena * (aracuni.popust / 100)))) * (racuni.popust / 100)) as popust
FROM " & skl & "_aracuni AS aracuni
INNER JOIN " & skl & "_racuni AS racuni ON aracuni. racuni_racun_id = racuni.racun_id
WHERE racuni.popust <> 0
AND DATE(racuni.datum) >= DATE('2010-01-01') AND DATE(racuni.datum) < DATE('" & Format(Datum1, "yyyy-MM-dd") & "')), 0) AS donos_popust,

(SELECT COUNT(primke.primka_id) FROM " & skl & "_primke AS primke
WHERE DATE(primke.timest) >= DATE('2010-01-01') AND DATE(primke.timest) < DATE('" & Format(Datum1, "yyyy-MM-dd") & "')) as count_primke,

(SELECT COUNT(racuni.racun_id) FROM " & skl & "_racuni AS racuni
WHERE DATE(racuni.datum) >= DATE('2010-01-01') AND DATE(racuni.datum) < DATE('" & Format(Datum1, "yyyy-MM-dd") & "')) as count_racuni,

(SELECT COUNT(nivelacije.nivelacije_id) FROM " & skl & "_nivelacije AS nivelacije
WHERE DATE(nivelacije.timest) >= DATE('2010-01-01') AND DATE(nivelacije.timest) < DATE('" & Format(Datum1, "yyyy-MM-dd") & "')) as count_nivelacije,

(SELECT COUNT(racuni.racun_id) FROM " & skl & "_racuni AS racuni
WHERE racuni.popust <> 0 AND DATE(racuni.datum) >= DATE('2010-01-01') AND DATE(racuni.datum) < DATE('" & Format(Datum1, "yyyy-MM-dd") & "')) as count_popust
FROM " & skl & "_aprimke AS aprime



dakle to bi trebalo ovdje pri dnu koda gdje vadim countove. za COUNT(racuni.racun_id) bi dakle trebao broj razlicitih dana.
nadam se da se skuzi sto mislim.. ajde hvala unaprijed. potrudit cu se da ovo bude zadnje pitanje takve vrste, ali radim na tome cijeli dan i ne mogu vise... gotov sam :p

sorry sto je post malo preširok.

P.S. zanemarite ove " & skl & "_ ... to VB6 tako spaja stringove... ovo je jos i ociscea sintaksa. da vidite kako to u basicu izgleda proplakali bi...


Pozdrav!
 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: sum po vise tablica17.01.2010. u 19:52 - pre 172 meseci
SELECT COUNT(DISTINCT DATE(racuni.datum)) FROM racuni

ovo sam trebao.

Poz!
 
Odgovor na temu

dragancesu
subotica

Član broj: 38340
Poruke: 2189
194.247.212.*



+73 Profil

icon Re: sum po vise tablica20.01.2010. u 14:00 - pre 172 meseci
Ne znam ko ti je dizajnirao tabele, ali nesto bi morao da menjas i olaksao sebi (i drugima). Primer koji si naveo lici na robno knjigovodstvo. Maticini podaci bi trebalo da budu u odgovarajucim tabelama za robu (sifra, naziv, ...), korisnici (sifra, naziv, ...) i sta ti vec treba. Druga grupa tabela bi ti trebala biti dokument-promet.

Dokument bi trebao imati neku strukturu

vrsta dokumeta (ulaz, izlaz, prijemnica, faktura, ... )
broj dokumenta
datum promene
i ostalo sto ti treba

A promet ima strukturu

vrsta dokumenta
broj dokumenta
datum (ali ne mora)
sifra robe
kolicina ulaz
kolicina izlaz
vrednost ulaz
vrednost izlaz
i ostalo sta ti treba.

Jasno je da je veza izmedju ovih tabela po poljima vrsta dokumenta i broj dokumenta, relacija 1:n.

I onda ti je lako napraviti upit, sumiranje, grupisanje po robi (lager), listu prometa (kartice) i slicno.

sql serveri su danas dovoljno mocni da izdrze jednu veliku tabelu i elegantnije je s njom raditi nego sa nekoliko manjih. U tvom slucaju za svaku vrstu promene (dokumenta) kreiras novu tabelu, to se elegantnije resava uvodjenjem polja vrsta promene i u prometu popunjavas polja koja ti trebaju.

A to sto ti ne napravi izlaz kad nemas vezu u tabeli normativ to resis kontrolom podataka. Ako nema treba uneti i gotovo. Kako god da okrenes ne mozes bez kontrole, a bolje kad je na ulazu ili bolje receno u prvim fazama unosa podataka u aplikaciju.

Mozda nije odgovor na tvoje pitanje kako ocekujes, ali ovako kako radis nece ici jos dugo i naci ces se u velikom problemu.









Pomozite Micro$oftu u borbi protiv piraterije, poklonite prijatelju Linux
 
Odgovor na temu

[es] :: MySQL :: sum po vise tablica

[ Pregleda: 3243 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.