Autor | Zpráva | ||
---|---|---|---|
jan fabo Profil * |
#1 · Zasláno: 22. 6. 2009, 14:56:44
zdravim,
na vyber dat z tabulky mam pouzity prikaz select * from tabulka where ip="192.168.1." na vystupe ocakavam dakyto format dat: 192.168.1.0 192.168.1.1 192.168.1.2 ... 192.168.1.255 vystupne data z tohto sql su spravne az nato, ze mi ich triedi podla ip adresy, co vyzera potom asi takto> 192.168.1.0 192.168.1.1 192.168.1.10 192.168.1.100 192.168.1.101 ... 192.168.1.255 id v tabulke nie je a prerobit tabulku by sa rovnalo prerobeniu velkej casti skriptu. zvlastnejsie vsak je ze niekedy to zoradi a niekedy nie, zalezi na tabulke ktorej taha data. a posledna pozoruhodnost je ze v php ked v php skripte ide sql pekne ako ma, tak v phpmyadmine ten isty sql zotriedi data tak, ako nechcem... skusal som guglit, ale nenasiel som ziadny zachytny bod. kodovanie je na vsetkych strankach rovnake utf8-slovak-ci, ip adresy su ulozene ako varchar (15) dakujem za radu |
||
RockFire Profil |
#2 · Zasláno: 22. 6. 2009, 15:18:34
Zkus mysql_query("select * from tabulka where ip='192.168.1.' ORDER BY ip"). Je to možná blbobst, ale nic jinýho mě nenapadá :-)
|
||
jan fabo Profil * |
#3 · Zasláno: 22. 6. 2009, 15:27:06
ano, keby som pouzil takyto sql, tak vystyp zoradeny podla ip adries by bol korektny...ja ale chcem aby to nezoradilo, lebo vlastne to nemam podla coho zoradovat. ip adresy boli vlkadane do tabulky postupne skriptom, takze su za sebou ale takyto select to vsetko "rozhasi" :(
|
||
petr 6 Profil |
#4 · Zasláno: 22. 6. 2009, 15:37:22
jan fabo
Tak chces je seradit, nebo nechces? |
||
TomášK Profil |
#5 · Zasláno: 22. 6. 2009, 16:30:52
zkus ORDER BY INET_ATON(ip), to by je mohlo seřadit podle toho jak píšeš. Bez ORDER BY to databáze podle mě může setřídit jak chce, ale nejsem si tím jistý.
|
||
Kajman_ Profil * |
#6 · Zasláno: 22. 6. 2009, 20:47:13
Pro ukázkový příklad stačí seřadit podle velikosti a pak podle abecedy. Obecně to ale nefunguje. Můžete si ukládat ip jako součet těch 4 bytů. Tam pak bude řazení a některé druhy maskování rychlejší. Jen si to musíte zase převrátit na tečkový zápis při výpisu.
|
||
jan fabo Profil * |
#7 · Zasláno: 23. 6. 2009, 08:52:49
2 petr 6: chcem to zoradit podla ip adresy, ale to bude jedine vtedy, ak v sql nebude ziadna klauzula order by
myslim, ze problem bude niekde v db: select * from subnet_1 where ip like "192.168.1.%" v mojom skripte to ide v pohode, ale v phpmyadmine su vysledky zoradene stringovo podla ip adresy. ten isty sql.pridava pma nejake klauzulky ktore nevidiet? |
||
Kajman_ Profil * |
#8 · Zasláno: 23. 6. 2009, 08:59:59
Když nedáte order by, tak databáze může vrátit výsledky v libovolném pořadí.
|
||
jan fabo Profil * |
#9 · Zasláno: 23. 6. 2009, 09:03:43
toto
select * from subnet_1 toto select * from subnet_1 where ip like "192.168.1.%" |
||
ninja Profil |
#10 · Zasláno: 23. 6. 2009, 09:43:07
Když nedáte order by, tak databáze může vrátit výsledky v libovolném pořadí.
|
||
tiso Profil |
#11 · Zasláno: 23. 6. 2009, 10:03:19
jan fabo - nenapísal si ako ich chceš mať usporiadané.
|
||
jan fabo Profil * |
#12 · Zasláno: 23. 6. 2009, 10:04:19
2 kajman&ninja: ja chapem :)
1. ale nie je to uplna pravda, pretoze ked nedam order by tak vysledky su vzdy v ROVNAKOM poradi, aj ked bez zotriedenia. tuto skutocnost zrejme vyuziva aplikacia ktoru opravujem. v db je asi 30 sieti=tabuliek a na vsetkych to funguje okrem dvoch novopridanych, ale ziaden rozdiel v tabulkach som nenasiel, iba v pocte zaznamov. 2. zaujima ma preco moj skript (a teraz som zistil ze aj mysql konzola) vracia vysledky inak ako phpmyadmin...ale toto nie je az take podstatne 3. no chcel som sa tomu vyhnut ale asi to inak nepojde: jedine vychodisko bude asi prerobit vsetky tabulky pridanim pola id, updatovanim tohto pola na poradove cislo a potom ho zmenit na automaticke pole a index...neviem ci to je najlepsie riesenie ale fungovat by to mohlo |
||
jan fabo Profil * |
#13 · Zasláno: 23. 6. 2009, 10:05:44
usporiadane ich chcem mat takto
192.168.1.0 192.168.1.1 192.168.1.2 ... 192.168.1.255 a NIE takto 192.168.1.0 192.168.1.1 192.168.1.10 192.168.1.100 192.168.1.101 ... 192.168.1.255 |
||
tiso Profil |
#14 · Zasláno: 23. 6. 2009, 10:14:41
jan fabo
ORDER BY LENGTH(ip) ASC, ip ASC |
||
jan fabo Profil * |
#15 · Zasláno: 23. 6. 2009, 10:36:16
2 tiso: wow pekny workaround, takto to ide - RE5PECT.
uz zostava len otazka rozdielne usporiadanych vysledkov skriptu a phpmyadmina pri rovnakom sql, co bude sposobene pravdepodobne nejakou optimalizaciou v pma, ale teraz je to uz bezpredmetne. kazdopadne velka vdaka :) |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0