| | |
| Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Autor | Správa |
---|
Registrovaný: 07.08.06 Prihlásený: 18.11.21 Príspevky: 947 Témy: 268 Bydlisko: Levice |
Mam MySQL databazu, kde maju uzivatelia zaznaceny pocet bodov za urcity den. Jeden uzivatel moze mat viac dni aj viackrat skore za den. Priklad: ID / datum / name / score 1 1.6.2018 janko@janko.sk 2 2 1.6.2018 janko@janko.sk 5 3 2.6.2018 ferko@ferko.sk 20 4 5.6.2018 janko@janko.sk 1 5 8.6.2018 ferko@ferko.sk 2 Ja potrebujem vediet poradie konkretneho uzivatela, teda ak sa prihlasi do systemu janko, tak ze na ktorom mieste sa umiestnil vzhladom k ostatnym - podla najvyssieho poctu score. Keby bol kazdy uzivatel v tabulke len raz, tak samozrejme nie je problem to zoradit od najvyssieho skore. Ale takto treba najprv spocitat vsetky skore pre KAZDEHO uzivatela a nejakym sposobom na zaklade toho zoradit podla poradia, a toto prave neviem ci vobec je mozne.
|
|
Registrovaný: 15.06.14 Prihlásený: 25.04.24 Príspevky: 17930 Témy: 142 Bydlisko: Bratislava |
V subselecte spočítajte body užívateľov cez group by a count, následne z toho správ select najvyššieho skóre
_________________ ITX >>> ATX |
|
Registrovaný: 07.08.06 Prihlásený: 18.11.21 Príspevky: 947 Témy: 268 Bydlisko: Levice | Napísal autor témy neopagan: 11.06.2018 14:21 | |
|
diky Eliote no logicky ano, ale neviem ako to skombinovat. Skusal som: Kód: SELECT COUNT(*) FROM( SELECT score FROM `tabulka` WHERE name= 'janko@janko.sk' ) ale toto mi len zisti pocet riadkov od daneho uzivatela, ja potrebujem spocitat skore pre kazdeho a na zaklade toho to zoradit. Nasiel som nieco taketo, vecer to otestujem a pretransformujem na moju tabulku. Potreboval som vediet tu funkciu SUM, co vlastne spocita hodnoty. Kód: SELECT * FROM ( SELECT s.*, @rank := @rank + 1 rank FROM ( SELECT user_id, sum(points) TotalPoints FROM t GROUP BY user_id ) s, (SELECT @rank := 0) init ORDER BY TotalPoints DESC ) r WHERE user_id = 3
|
|
Registrovaný: 15.06.14 Prihlásený: 25.04.24 Príspevky: 17930 Témy: 142 Bydlisko: Bratislava |
to co robis, uz si skoro tam ale este nie stale nakonci nieco taketo ti ku kazdemu uzivatelovi priradi poradie medzi ostatnymi (pozri rozdiel medzi rank a dense_rank, ktore z toho ti bude vyhodnejsie a lepsie pouzit): Kód: SELECT name, rank() OVER(ORDER BY points DESC) FROM ( SELECT name, SUM(*) AS points FROM table GROUP BY name )
_________________ ITX >>> ATX |
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 12.06.2018 10:29 | |
|
To ako vážne subquery? Kód: select email, sum(points) as p from table group by email order by p desc
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 15.06.14 Prihlásený: 25.04.24 Príspevky: 17930 Témy: 142 Bydlisko: Bratislava |
som predpokladal ze chce mat v tabulke aj stlpec s poradovym cislom kde sa dany pouzivatel nachadza
_________________ ITX >>> ATX |
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 12.06.2018 10:37 | |
|
Poradové číslo netreba, ak stačí vedieť moje konkrétne poradie. Na jedno query si vytiahnem môj počet bodov (ten sa predpokladám niekde cachuje, nech sa nemusí stále počítať nanovo) a potom stačí Kód: select email, sum(points) as p from table group by email having sum(points) > 200
kde 200 je môj počet bodov. Počet riadkov, ktoré vráti tento select, je počet užívateľov, ktorí majú viac bodov než ja. Typicky sa potom leaderboardy robia tak, že na jeden select vytiahnem prvú desiatku (tie viem očíslovať aj v php) a v druhom selecte moje poradové číslo. Zbytočne budem ťahať všetkých užívateľov, keď ma zaujíma jeden, alebo 10. A ak chcem očíslovať všetkých, tak to viem tiež robiť až pri zobrazení, zbytočne si tým nemusím spomalovať select.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 15.06.14 Prihlásený: 25.04.24 Príspevky: 17930 Témy: 142 Bydlisko: Bratislava |
tak zase nieco nove pre mna vdaka za objasnenie
_________________ ITX >>> ATX |
|
| Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| vypis z dtb - 2 moznosti v PHP, ASP | 2 | 475 | 27.09.2016 10:37 neopagan | | MySQL vypis v Databázy | 1 | 313 | 07.01.2014 15:34 kudzo3 | | výpis z mysql v PHP, ASP | 13 | 1207 | 09.12.2009 19:40 M1rcO_o | | MYSQL vypis podmienky v Databázy | 6 | 788 | 07.09.2010 20:15 camo | | Vypis poctu z MySQL v PHP, ASP | 11 | 647 | 30.01.2009 12:39 jtomcik | | Výpis údajov z mysql tabuľky v PHP, ASP | 29 | 1571 | 05.12.2008 9:44 stenley | | Výpis podľa stĺpca z MySQL v PHP, ASP | 6 | 397 | 04.11.2012 21:14 xxx9955 | | Vypis hlavicky mysql v php v PHP, ASP | 2 | 416 | 25.04.2010 9:11 Bauglir | | vypis s mysql tabulky na stranku v PHP, ASP | 5 | 792 | 11.01.2009 15:16 dadmtb | | vypis mysql DB - nevidim v skripte chybu v PHP, ASP | 3 | 564 | 02.12.2007 23:17 miro277 | | Vypis z MySQL a spracovanie php scriptu v tabulke [ Choď na stránku: 1, 2 ] v PHP, ASP | 39 | 2604 | 21.03.2010 1:22 JanoF | | MySQL výpis "embed" kódu v PHP, ASP | 2 | 459 | 20.05.2010 15:16 MAREJ | | optimalizacia vypisu z dtb v PHP, ASP | 12 | 664 | 21.09.2009 23:08 kmsa | | nahodny vyber z dtb v Databázy | 5 | 727 | 01.06.2009 12:02 walther | | porovnanie veku v dtb v Databázy | 0 | 286 | 26.09.2014 14:18 neopagan | | zmena poradia(cisla) v PHP, ASP | 7 | 581 | 15.08.2008 18:10 Blackdevil |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|