Da sa zoradit vypis z DB ak nemam vsetky kriteria v jednej tabulke?
PHP+Mysql
Napriklad by som chcel vypisat uzivatelov z tabulky uzivatelia podla abecedy a zaroven (z nizsou prioritou) podla poctu bodov, ktore su ale zapisane v inej tabulke.
Potrebujem to na navrh tabuliek. Neviem ci treba zapisovat pocet bodov do tabulky body a zaroven aj do tabulky uzivatelia kvoli zoradeniu, alebo by pocet bodov stacil iba v tej jednej tabulke...
zoradenie z viacerych tabuliek
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Momentalne to mam takto:
tabulka ZAPASY
Id Hrac1 Hrac2 Skore1 Skore2 Body
V tabulke zapasy je uzivatel niekedy na pozici Hrac1 a niekedy na pozici Hrac2, podla parametrov zapasu.
Skore1 znamena prvu cast skore zo zapasu. Teda pri skore 20:15 ma Skore1 hodnotu 20 a Skore2 15.
Body: ak Skore1 > Skore2 potom Body maju hodnotu napriklad 2
v opacnom pripade hodnotu 0, cize neziska ziadne body
tabulka UZIVATELIA
ID MENO BODY Skore1 Skore2
Body,Skore1,Skore2
Body predstavuju celkovy sucet vsetkych zapasov.
Po kazdom odohranom zapase sa updatuju teda: body=body+ziskane_body
to iste aj Skore1 a Skore2
Pri vypise zoradujem uzivatelov podla bodov a v druhom rade podla skore.
Teraz je vsetko aj v tabulke UZIVATELIA, cize tam problem nie je, ale neviem ako to spravit tak, aby to bolo len v tabulke ZAPASY...
tabulka ZAPASY
Id Hrac1 Hrac2 Skore1 Skore2 Body
V tabulke zapasy je uzivatel niekedy na pozici Hrac1 a niekedy na pozici Hrac2, podla parametrov zapasu.
Skore1 znamena prvu cast skore zo zapasu. Teda pri skore 20:15 ma Skore1 hodnotu 20 a Skore2 15.
Body: ak Skore1 > Skore2 potom Body maju hodnotu napriklad 2
v opacnom pripade hodnotu 0, cize neziska ziadne body
tabulka UZIVATELIA
ID MENO BODY Skore1 Skore2
Body,Skore1,Skore2
Body predstavuju celkovy sucet vsetkych zapasov.
Po kazdom odohranom zapase sa updatuju teda: body=body+ziskane_body
to iste aj Skore1 a Skore2
Pri vypise zoradujem uzivatelov podla bodov a v druhom rade podla skore.
Teraz je vsetko aj v tabulke UZIVATELIA, cize tam problem nie je, ale neviem ako to spravit tak, aby to bolo len v tabulke ZAPASY...
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
stále si neviem dobre predstaviť ako to máš. Ak je remíza a zapisuje sa teda bod obidvom, tak to máš dva riadky v tabulke skore? Ak by teda mala tabulka užívatelia id,meno a skore by bolo id,hrac1,hrac2,skore1,skore2,body tak by to mohlo byť nejak takto:
Kód: Vybrať všetko
SELECT u.*, z.*, sum(z.body) sucet FROM `uzivatelia` u, `zapasy` z WHERE u.id=z.hrac1 group by u.meno order by u.meno, sucet-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
tento select isto nebude fungovat.audiotrack napísal:stále si neviem dobre predstaviť ako to máš. Ak je remíza a zapisuje sa teda bod obidvom, tak to máš dva riadky v tabulke skore? Ak by teda mala tabulka užívatelia id,meno a skore by bolo id,hrac1,hrac2,skore1,skore2,body tak by to mohlo byť nejak takto:Kód: Vybrať všetko
SELECT u.*, z.*, sum(z.body) sucet FROM `uzivatelia` u, `zapasy` z WHERE u.id=z.hrac1 group by u.meno order by u.meno, sucet
Napriklad hraju medzi sebou: marek, ktoreho id je 2, a lukas ktoreho id je 1
marek hra doma cize bude Hrac1
Zapas skonci 2:3
Tabulka zapasy bude:
Domaci hrac (hrac1) ziskal 0 bodov, hostujuci hrac2 ziskal 3 body.
Ak by bola remiza body by boli 1.
(na toto mam funkciu, ktora najskor zisti ci hrac hral doma alebo vonku)
Ale pri vypise vsetkych hracov a ich zoradeni naraz je tu problem.
Tabulka zapasy mi sluzila len na evidenciu zapasov. Zobrazujem pomocou nej jednotlive zapasy, spolu so skore zapasu. Body sa pocitaju pomocou funkcie, ktora zisti aj ci hrac je doma alebo vonku.
Ak sa to teda da zoradit, tak ze do tabulky uzivatelia nebudem muset zapisovat celkove body a skore a vsetko sa bude vypocitavat len z tabulky Zapasy, je mi jedno ako budu navrhnute tie tabulky, to si upravim.
Teda ak mas lepsi napad na usporiadanie tabuliek, tak aby to fungovalo, skus napisat ako by si to spravil ty...
marek hra doma cize bude Hrac1
Zapas skonci 2:3
Tabulka zapasy bude:
Kód: Vybrať všetko
Id(zapasu) Hrac1 Hrac2 Skore1 Skore2 Body
3 2 1 2 3 0Ak by bola remiza body by boli 1.
(na toto mam funkciu, ktora najskor zisti ci hrac hral doma alebo vonku)
Ale pri vypise vsetkych hracov a ich zoradeni naraz je tu problem.
Tabulka zapasy mi sluzila len na evidenciu zapasov. Zobrazujem pomocou nej jednotlive zapasy, spolu so skore zapasu. Body sa pocitaju pomocou funkcie, ktora zisti aj ci hrac je doma alebo vonku.
Ak sa to teda da zoradit, tak ze do tabulky uzivatelia nebudem muset zapisovat celkove body a skore a vsetko sa bude vypocitavat len z tabulky Zapasy, je mi jedno ako budu navrhnute tie tabulky, to si upravim.
Teda ak mas lepsi napad na usporiadanie tabuliek, tak aby to fungovalo, skus napisat ako by si to spravil ty...