Autor Zpráva
RastyAmateur
Profil
Dobrý den, chtěl bych se zeptat, jestli někdo nezná jednoduchý návod (nejlépe přímo v MySQL), který mi vrátí pozici řádku... Když mám v tabulce nějakou hodnotu, a chci zjistit kolikátý nejvyšší je nějaký řádek s nějakým ID..

Děkuji
Taps
Profil
Diskuse JPW: Některé časteji řešené dotazy pro MySQL - FAQ » Číslování řádků přímo v mysql
RastyAmateur
Profil
Nějaký složitý, ale děkuju, pokusím se :)
Kajman
Profil
RastyAmateur:
Spočítejte počet řádků, co mají být podle podmínky před ním a přičtěte jedničku.
RastyAmateur
Profil
To už by nemuselo být tak složité. Jen to asi budu řešit v php, jelikož proměnné v mysql slyším poprvé.

Na druhou stranu by bylo fajn se to naučit...
mimochodec
Profil
RastyAmateur:
Možná bys mohl popsat, k čemu to potřebuješ. Zdá se mi pravdpodobné, že ti celý ten postup pak někdo rozmluví.
Alphard
Profil
RastyAmateur:
Při určování pořadí tady jsou v podstatě 2 možnosti:
a) Ty proměnné uvedené ve FAQ mají smysl, pokud chcete očíslovat více vracených záznamů (tuto úlohu lze často řešit lépe při výpisu).
b) Z vašeho dotazu se mi zdá, že cílem je určení pořadí jediného konkrétního záznamu. V tom případě je relevantní rada [#4] Kajman, ta je bez proměnných v SQL. Tady se řešení z FAQ vůbec nehodí, protože neumožňuje určit pořadí jednoho záznamu, musel byste z databáze vytáhnout všechny předchozí a pak je zahodit (šlo by to udělat v poddotazu, ale to už je úplně praštěné :-)).
RastyAmateur
Profil
Určení pozice uživatele v žebříčku podle počtu bodů.

Řikám, bude lepší se to naučit v tom mysql, jelikož řešit to s php a s databází o stovkách uživatelů, by byl asi problém...


Alphard:
A ono jde spočítat vše jen před určitým řádkem, nebo z db vytáhnout vše a přes podmínku zjistit, jestli je to TEN řádek?
Alphard
Profil
RastyAmateur:
A ono jde spočítat vše jen před určitým řádkem
No jistě, já si za 9 let na této diskusi nevzpomínám, že by kolega Kajman dal špatnou radu :-)

Mějme v databázi řádky s body a chceme určit pořadí, použije se prosté
select count(*) from tabulka where points > 58 order by points desc
Zjistíme počet uživatelů, kteří mají více bodů, než hledaný uživatel (58 bodů). Pokud jich je třeba 38, tak náš hledaný uživatel je hned další v řadě, takže 38 + 1.
RastyAmateur
Profil
To je chytrý!! To mě nenapadlo... Je vidět, že ještě nemám moc zkušeností.

Děkuji!!
Dusann
Profil
Taps:
Diskuse JPW: Některé časteji řešené dotazy pro MySQL - FAQ » Číslování řádků přímo v mysql

IMHO tie riešenia vo FAQ sú zbytočne komplikované...inkrementačný column je možné použiť cez vlastnú funkciu:

Diskuse JPW: Pomocný inkrementačný column
RastyAmateur
Profil
Dusann:
Ono to vyjde na stejno - i při tvém dotazu bych se musel učit proměnné v MySQL. Ale děkuji za reakci, nejlepší způsob má stejně Alphard :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: