Ne ponavaljs cenu. I dalje mozes da imas dve tabele.
SELECT p.finansije_id, SUM(p.cena)
FROM finansije f
LEFT JOIN podaci p ON p.finansije_id=f.id
GROUP BY p.finansije_id
Ovde ti je sve sto sam radio uradjeno u 2 tabele i nisam nigde rekao da bude jedna tabela.
Kako da znas koje cene idu u koji finansijski dokument?
Imas cenu 1 = 10 i cenu 2 = 30 to ide u finansije ukupno=40 i posle imas cenu 3 = 17 i to ide u finansije ukupno=17.
Kako da znas da cena 1 i 2 idu u jedanu ukupnu cenu a cena 3 ide u drugu ukupnu cenu?
Kakva ce ti muka biti ako ti je ukupna cena u svakom redu u jednoj tabeli? Ako izmenis jedan red onda moras sve redove da menjas.
Kako ces da izracunas onda ukupnu cenu svuh ukupnih cena? Kako ces da povezujes sa drugim tabelama?
Sve ce ti to kasnije biti muka teska!
Rekao sam ovako nesto:
1. Slucaj kada pamtis ukupnu cenu
tabela podaci:
id--|--finansije_id--|-cena-|
1--|-----1---------|--10--|
2--|-----1---------|--30--|
3--|-----2---------|--17--|
tabela finansije:
id | ukupna_cena |
1-|-----40-------|
2-|-----17-------|
ovo resavas ako menjas recimo dokument 1, sql:
UPDATE finansije SET ukupna_cena = (SELECT SUM(cena) FROM podaci WHERE finansije_id=1)
WHERE id=1
Predosti ovoga je sto ti finansije ne zavise od magacina, odnosno prodaje, odnoso ne zavise od necega sto prodajes ili kupujes vec mozes da uneses u finansije troskove kao sto je racun za struju, vodu, internt itd....
Mana je sto moras svaki put kada menjas dokument da pokrenes sql da uradi update tabele finansije. Problem nasteje kada recimo imas bug i programu i onda moras da ga ispravis sa sql-om i zaboravis da updatujes tabelu. Ili ako ti pukne skripta ako ne radis preko transakcija. Podaci ce biti pogresni.
Drugi primer:
2. Slucaj kada preracunavas ukupnu cenu
tabela podaci:
id--|--finansije_id--|-cena-|
1--|-----1---------|--10--|
2--|-----1---------|--30--|
3--|-----2---------|--17--|
tabela finansije:
id |
1-|
2-|
SELECT p.finansije_id, SUM(p.cena)
FROM finansije f
LEFT JOIN podaci p ON p.finansije_id=f.id
GROUP BY p.finansije_id
sada ces da dobijes rezultate
finansije_id | sum_of_cena |
----1------|----40--------|
----2------|----17--------|
Predosti ovog slucaja je to sto ti nece doci do greske u programu ali neces moci da unostis ostale finansijske dokumente kao sto su troskovi.
Mislim moci ces to da resis ali ce ti biti velika komplikacija jer ces morati union 2 tabele pa kasnije iz tog unijona da obradjujes podatke. Ili napravi neki view pa ce ti malo olaksati problem
sa unosom troskova.
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]