Autor Zpráva
snazimse
Profil
Zdravím,

chtěl bych se zeptat, jak se provede, když mám v mysql tabulce idčka s různými čísly,
abych vybral dejme tomu od čísla záznamu 5463 bude až teprve nový dotaz začínat.
Třeba jako id > 5463 , ale ne podle skutečného čísla, ale podle záznamu.

Tzn:
         ID
        98745
        864178
        5463->odtud začni dotaz
        79654

Dá se to udělat, přes UNION ALL, nebo něco takového?

Děkuji moc předem za rady!
mimochodec
Profil
Podle jiného sloupce, pokud v něm máš uloženo třeba něco jako čas vytvoření záznamu.
snazimse
Profil
mimochodec:

Děkuji moc za reakci.
To bych si teoreticky, mohl generovat sloupec skutečných idček, je ještě nějaké řešení?
mimochodec
Profil
snazimse:
Já hlavně nerozumím, co v tom ID máš teď a proč se to jmenuje ID.
Když píšeš, že chceš řadit podle "záznamu", tak zřejmě myslíš pořadí, v jakém o vypisuje phpadmin nebo adminer. V tabulce pokud vím žádná informace o pořadí není, je to prostě x řádků, kde jsou nějaké hodnoty. Můžeš se snažit řadit "stejně jako adminer", ale nevím o tom, že by k tomu šlo použít něco jiného, než ORDER BY nějakýsloupec.
xROAL
Profil
snazimse:
To bych si teoreticky, mohl generovat sloupec skutečných idček, je ještě nějaké řešení?
Databáza priamo v sebe nemá nejaký skutočný mechanizmus na zoraďovanie záznamov. Vždy radenie musí byť určené podľa nejakého stĺpca, inak je to len zhluk dát, ktorý vo výsledku môže byť zoradený v takom poradí, v akom to databáza číta z disku/pamäte. Na to by si sa ale nikdy nemal spoliehať. Stačí iný databázový engine, iná verzia rovnakého engine-u, alebo iná verzia MySQL a poradie zrazu môže byť úplne inakšie.

Najrozumnejšie riešenie by bolo použiť stĺpec s auto_increment, alebo čas vytvorenia záznamu, ako už písal mimochodec.
Zistiť hodnotu ID/času pre záznam od ktorého chceš začať a následne vyberať od / radiť podľa tohto stĺpca.
snazimse
Profil
mimochodec, xROAL:

Děkuji za perfektní objasnění.Jeň mě zajímalo, jestli něco takového jde.

No já zpracovávám xmlko ,které generuje různorodá idčka, které mají defaultní hodnotu od poskytovatele a potřebuji je načítat ajaxem na stránkování k tomu musím znát poslední id od kterého listovat dále, jenže samozřejmě to ukáže špatné výsledky, protože je kolize idček jelikož jsou různé neinkrementované, tak to nejde.
A nejde řadit podle toho, protože poslední je třeba 54569 a bude následovat 34569, tak to samozřejmě nepůjde.

Budu si muset vytvořit další sloupec, jinak to nepůjde.
Joker
Profil
snazimse:
samozřejmě to ukáže špatné výsledky, protože je kolize idček
No jestli je to primární klíč, nemůžou být v tabulce dvě stejná id.

Je to zhruba jak píše xROAL, jen databáze samozřejmě mechanismus pro řazení záznamů, ale nemá žádné definované výchozí řazení.
Čili pokud není určené žádné řazení přes ORDER BY, není pořadí vrácených záznamů definované a nelze se na něj spolehnout.

Jinak na stránkování by šlo použít ORDER BY + LIMIT

Budu si muset vytvořit další sloupec
Nebo řadit podle nějakého už existujícího.
snazimse
Profil
Joker

No jestli je to primární klíč, nemůžou být v tabulce dvě stejná id.

Je primarní, nicméně jsem to špatně řekl, jako není to kolize.Asi je špatný celý koncept, to jsem dostal po někom, ono to vlastně není idčko, že jo.

Je to idčko, ale ne pro databázi, takže to asi předělám, to musí být auto-increment mě jen zajímalo, jestli to jde, rovnou vjet do toho záznamu, to jsem si zhruba představoval,
něco jako, že vyselektuju poslední idčko, a spojím unionem a pak vyberu, že vybírám od toho , nebo jako tmp, či něco takového.

Ale přece jenom ta databáze je primitivnější struktura moc na to asi.

Budu si muset vytvořit další sloupec

Žádný existující není relevantní.

Děkuji!

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: