Matematičke operacije unutar baze

Da li je moguće unutar baze vršiti računske operacije?

npr:

imam tri kolone : ulaz, izlaz, stanje. Postoji li mogućnost da stanje = ulaz-izlaz.
Tj. da se automatski ažurira kad se ažuriraju ili ulaz ili izlaz?
Nešto slično kao u excelu
A1 = 2
A2 = 1
A3=A1-A2, tj. 1.

Sto ce ti atribut stanje ako ono direktno ovisi o atributima ulaz i izlaz?

Taj atribut ti je višak. Taj podatak možeš dobiti kod selekcije na način:

SELECT …, ulaz, izlaz, ulaz-izlaz AS stanje …

A kad već pitaš ovo što pitaš, naravno da je moguće.

Svakako ti preporučam da veću pažnju posvetiš projektiranju baze. Nekvalitetno projektirana baza može stvoriti veće probleme nego što možeš zamisliti.

Ukratko, u bazu upisuj samo i samo podatke koji su ti potrebni i koje ne možeš dobiti iz već zapisanih podataka.

Super, kako sada da mi to stanje ostane u bazi kraj ostalih atributa?

SELECT *  , ulaz - izlaz AS stanje
FROM `cigarete`LIMIT 0 , 30

Da li je moguće to raditi automatski?

[quote=“vanja_istra”]Da li je moguće unutar baze vršiti računske operacije?

npr:

imam tri kolone : ulaz, izlaz, stanje. Postoji li mogućnost da stanje = ulaz-izlaz.
Tj. da se automatski ažurira kad se ažuriraju ili ulaz ili izlaz?
Nešto slično kao u excelu
A1 = 2
A2 = 1
A3=A1-A2, tj. 1.[/quote]

ako hočeš automatski da ti sve bude u bazi , onda koristi trigere

http://dev.mysql.com/doc/refman/5.0/en/triggers.html

samo što ti se svaka operacija računa kao query.
ako imaš 10 trigera u svakom 5 query-a, to ti je ukupno 50 query-a.
i 100 korisnika istovremeno na bazi, pa vidi koliko je.
drugi način, isto ti trigeri, ali da ih kreiraš na replikacijskoj bazi.

Da vam objasnim cijelu situaciju.
Učim PHP.
Napravio sam jednu skirptu pomoću koje se ubacuje artikl u bazu podataka. Pomoću PHP-a sam sredio i dodavanje vrijednosti kod ulaza i izlaza.
Htio sam i stanje srediti preko koda, ali sam mislio da će ovako biti jednostavnije (da se kod svakog updatea stanje promjeni i takvo prikazuje u PHP kodu).

Kompliciraš si život :slight_smile:

Ako imaš polje “ulaz” i “izlaz” ne treba ti polje “stanje”. Da se ne izrazim da bi to bilo glupo :slight_smile:

Zapamti da u bazi jedan podatak treba biti zapisan samo na jednom mjestu. Ako imaš ova 3 polja, već si jedan podatak poduplao i kod svake promjene ćeš morati na 2 mjesta mijenjati podatak. Time se šansa za pogrešku povećava.

Znam da sam ga zakomplicirao…:stuck_out_tongue:
Sredit ću stanje pomoću dvije varijable u PHP-u, brzo, jednostavno i čisto.

Hvala! :slight_smile:

1.nauči normalizaciju baza

Niti ne trebaš php miješati u cijelu priču. SQL je dovoljno mocan jezik. Radi se o sasvim banalnoj stvari. SQL upit možeš postaviti tako da ti rezultat ispadne identično ko i da si imao 3 stupca u tablici.

Upit koji si prije sam napisao (SELECT *, ulaz-izlaz AS stanje …) će ti vratiti isti rezultat kao i da si imao sva 3 stupca. U ovom slučaju postavio si alias “stanje” za razliku ulaza i izlaza, taj alias se ponaša isto kao i da si imao kolonu u kojoj je doslovno zapisano to stanje.

Hvala ti na pomoći…
Ovako sam napravio i sve radi savršeno:

Uz to otkirio sam još jednu stvar dok sam te stvari iskušavao: moćne $_SESSION varijable!

Hvala još jednom.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja