IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Tabulka nejlepších hráčů v sql databázi

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Neaktivní uživatel:12.4.2019 14:02

Ahoj všichni,

dělám jednu hru. Pokud hráč správně odpoví přičte se 150 bodů. Navázal jsem sql databázi na tuhle hru ale narazil jsem na jeden problém. Potřebuji udělat nějaký systém, který usoudí jestli je vhodné výsledek pustit do databáze (např. pokud je skore větší než všechny dosud v databázi atd.) zatím mám nastaveno že výsledek se pustí pokud je skore větší než 1000. To je ale blbost. Nejenže to pustí pokaždé (1000, 1150 ...) ale pokud všichni ostatní uživatélé budou mít také 1000 nebu de to high-score. Potřebuji tedy nějaký algoritmus nebo něco.

Odpovědět
12.4.2019 14:02
Neaktivní uživatelský účet
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12.4.2019 15:29

???

-- ulozi skore
INSERT INTO `tab_skore` (`id_user`, `id_hra`, `value`) VALUES (123, 456, 1111)
-- vybere top10 pro id_hra=456 (vyber vse, serad od nevetsiho podle sloupce value, vrat prvnich 10)
SELECT `id_user`, `value` FROM `tab_skore` WHERE `id_hra`=456 ORDER BY `value` DESC LIMIT 10  -- nebo LIMIT 0,10

Cili, ukladam vse. Pripadne muzes pouzit UPDATE / REPLACE, prepsat hracovo posl. skore, pokud uz v tabulce existuje.

Nevidim prinos v tom zapisovat jenom nejvyssi skore, pokud se hrac dostane do tabulky. Kdyz se tam nedostane, tak nemuze prekonavat osobni rekord. Tabulka bude mit velmi brzo takova skore, ze to novacky nebude bavit.

Samozrejme by to slo realizovat. Stejnym SELECT dotazem.

SELECT `id_user`, `value` FROM `tab_skore` WHERE `id_hra`=456 ORDER BY `value` DESC LIMIT 10

Hracovo skore porovnas s posledni hodnotou z dotazu.

Editováno 12.4.2019 15:32
 
Nahoru Odpovědět
12.4.2019 15:29
Avatar
Odpovídá na Peter Mlich
Neaktivní uživatel:12.4.2019 15:48

Jak tedy udělám podmínku pokud chci aby se data do tabulky dostali pokud je(není) výsledek lepší než těch top 10?

Nahoru Odpovědět
12.4.2019 15:48
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Honza Prosecký:12.4.2019 19:25

Cau, mozna spis udelej select top 10 from tabulka order by score desc nebo select * from tabulka order by score desc limit 10.

 
Nahoru Odpovědět
12.4.2019 19:25
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Neaktivní uživatel
Peter Mlich:15.4.2019 9:01

Nedelam ve VB.
Vytahl bych z db top10. Porovnal skore s posledni hodnotou. A bud bych pridal INSERT nebo nic.
Sice bude v sql tabulka neustale narustat, ale to nevadi, neni toho tolik a usetris si dalsi kod. Top10 sql dotaz ti vytahne vzdy spravnych top10.
A kdyby to vadilo, tak muzes jednou za cas (tyden) pridat DELETE.
Ale mozna, ze by bylo naopak vyhodou mit historii, videt, jak se ktery hrac zlepsuje nebo vedet, na ktere pozici je hrac v tabulce. A daji se tyto informace pouzit pro boj s hackery a podvodniky s podvodnymi programy. Muzes tak detekovat anomalie.

 
Nahoru Odpovědět
15.4.2019 9:01
Avatar
Odpovídá na Peter Mlich
Neaktivní uživatel:15.4.2019 9:43

Jo tak bylo by fajn kdyby jsme to mohli udělat třeba přes vs live share. Potřebuji už to mít. Kdyztak mi napiš na mruj emal - rojtomas@email.cz

Nahoru Odpovědět
15.4.2019 9:43
Neaktivní uživatelský účet
Avatar
plelovsky
Člen
Avatar
Odpovídá na Neaktivní uživatel
plelovsky:15.4.2019 11:48

Co znamená "výsledek lepší než top 10"?
Nestačí vědět, jestli je výsledek vyšší než dosavadní existující výsledek?
Nejvyšší dosavadní výsledek:

SELECT MAX(score) FROM tabulka
 
Nahoru Odpovědět
15.4.2019 11:48
Avatar
Odpovídá na plelovsky
Neaktivní uživatel:15.4.2019 12:06

Potřebuji aby mi někdo přímo napsal kód deadline je blízko

Nahoru Odpovědět
15.4.2019 12:06
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Erik Šťastný:15.4.2019 12:14

To máš dobré, kolik zaplatíš?

 
Nahoru Odpovědět
15.4.2019 12:14
Avatar
Nahoru Odpovědět
15.4.2019 12:24
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.