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 |
#2 · Zasláno: 14. 5. 2015, 20:27:29
Podle jiného sloupce, pokud v něm máš uloženo třeba něco jako čas vytvoření záznamu.
|
||
snazimse Profil |
#3 · Zasláno: 14. 5. 2015, 20:42:20
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 |
#4 · Zasláno: 14. 5. 2015, 21:06:50
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 |
#7 · Zasláno: 14. 5. 2015, 21:53:14
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ě má 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 |
#8 · Zasláno: 14. 5. 2015, 22:23:21
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! |
||
Časová prodleva: 10 let
|
0