Posted: 13.03.2009 23:50 Post subject: MySQL pomoć
bok, trebam pomoć. radim besplatno jednom klubu web stranicu, budući da je nemaju. u globalu, odradio sam sve što sam planirao, od najava utakmica, top strijelca, rezultata po kolu i svega ostaloga... međutim, imam jedan problem.
nikako ne uspijevam napraviti automatsku poredak tablicu. to me poprilicno muci. pa mozete li mi pomoci?
imam tablicu UTAKMICE s stupcima: id(auto-increment ), domacin ,gost, gol1, gol2, kolo, datum, status, sezona_godina
status mi je -> prvenstvena, prijateljska, ili kup
i imam tablicu POREDAK id, klub, poredak, gol_razlika, pozicija...
inace, meni se cini da te muci vise od te "automatske poredak tablice"...
- sto su atributi domacin i gost? int identifikator kluba u relaciji klubovi ili (var)char naziv kluba? ako je drugo, onda ce ti se dogoditi stvari poput "nk dinamo", "dinamo", "Dinamo" koje su razliciti podaci, a misli se na isti klub
- sto je atribut status? enum ili nesto trece?
sto se ove relacije poredak tice, kako ju mislis odrzavati? vjerojatno bi bilo najbolje napraviti okidace (triggere) koji reagiraju na promjenu u relaciji utakmice i azuriraju poredak, iako mi se cak ta relacija cini suvisnom. s obzirom da se ne radi o konkretnim podacima koje spremas u bazu nego o podacima koji vec postoje u drugoj relaciji, bolje bi bilo napraviti pogled (view) kojim ces onda dinamicki dohvacati sadrzaj relacije utakmice...
ako ti se sve ovo cini kompliciranim, vjerojatno trebas malo bolje prouciti rad s bazama podataka...
Moram priznati da nisam sasvim shvatio što te muči...
Ali bilo kakav poredak možeš složiti prilikom izvršavanja querry-ja na bazi - "order by" bi ti trebao odraditi sve potrebno...
ok, krivo sam se izrazio. automatska poredak tablica = tablica koja bi se updateala sama kada ja nakon gotovog kola upisem rezultate u tablicu utakmice. domacin i gost su char, i uvijek se unasaju ista imena (iz tablice u cms-u, tako da se ne moze dogoditi da bude nk dinamo, dinamo, ili recimo hnk dinamo) a id je broj klubova u ligi. atribut status u tablici utakmice je isto char = prijateljska, kup i prvenstvena. i također ne može biti ništ drugo uneseno. uvijek je isto.
i sad, ne znam kako napraviti ovo otprilike:
SELECT * FROM poredak
ako je poredak["klub"]==utakmice["domacin"] i ako je utakmice["gol1"]>utakmice["gol2"] upisi u tablicu poredak gdje je utakmice["domacin"]==poredak["klub"] bodovi+3 , pa za nerješeno i izgubljeno, i onda za gostućuje klubove
order by i radi dobro, ako ja nakon svakog kola sam upisem konacan broj bodova kluba, ili njegovu poziciju... trenutno. a ja bi htio da iz tablice utakmice izracunam broj bodova svakog kluba i upisem to u poredak, i onda normalno najmanji je problem ispisat te klubove prema broju bodova.
mozes napraviti okidac koji ce se izvrsiti nakon svakog upisa u relaciju utakmice, ali ne i nesto kao "nakon sto ja unesem 10 ntorki (redaka) podataka, napravi to i to". naravno, ako napravis okidac koji se izvrsi nakon svakog upisa, onda ga napravis tako da izmijeni samo one klubove koje treba...
znaci nesto kao:
Code:
CREATE TRIGGER AFTER INSERT ON utakmice
FOR EACH ROW BEGIN
IF NEW.gol1>NEW.gol2
UPDATE poredak SET bodovi=bodovi+3 WHERE klub=NEW.domacin
ELSE
IF NEW.gol1<NEW.gol2
UPDATE poredak SET bodovi=bodovi+3 WHERE klub=NEW.gost
ELSE
UPDATE poredak SET bodovi=bodovi+1 WHERE klub=NEW.domacin
UPDATE poredak SET bodovi=bodovi+1 WHERE klub=NEW.gost
END IF
END IF
END
ovo sam pisao iz glave i vjerojatno ima sintaksnih gresaka, ali ti daje opcu sliku sto bi trebalo napraviti za ovo sto zelis...
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum