Autor | Zpráva | ||
---|---|---|---|
peta Profil * |
#1 · Zasláno: 27. 2. 2006, 10:54:08
mam tabulku uzivatelu, kde mam nicky:
aaa bbb000 ccc g_neco guest_cislo ddd a potrebuji to seradit tak, aby guest_* a g_* bylo na konci, nejlepe v poradi: uzivatele g_ guest_ jak na to? aspon funkce, uz si dihledam pouziti |
||
Anonymní Profil * |
#2 · Zasláno: 27. 2. 2006, 11:12:08
... ORDER BY uzivatele ASC");
opačně je DESC a na konec dotazu, za to už se dává jen LIMIT |
||
Hugo Profil |
#3 · Zasláno: 27. 2. 2006, 11:19:01
Anonymní
On spíš myslí něco takového ... ORDER BY (uzivatele='guest_*') ASC, (uzivatele='g_*') ASC, uzivatele ASC"); |
||
Kajman_ Profil * |
#4 · Zasláno: 27. 2. 2006, 11:23:39
Asi to má byt obecně, takže
... (uzivatele like 'guest_%') ASC, (uzivatele like 'g_%') ASC, ... |
||
peta Profil * |
#5 · Zasláno: 27. 2. 2006, 14:31:13
Super :) Ma to jeste nejake mouchy, ale vypada to takto:
$dotaz = "SELECT * FROM $tabulka WHERE `room_id` = '$room' ORDER BY (`room_login`) ASC, (`room_login` like 'g_%') ASC, (`room_login` like 'guest_%') ASC"; http://mracek.xhosting.cz/sez/sezchatlogin.php Jsem to chtel resit slozitejsi konstrukci pres spojeni tabulek. |
||
Kajman_ Profil * |
#6 · Zasláno: 27. 2. 2006, 15:55:59
V order by by měly být ty like konstrukce před samotným loginem (jak to má Hugo), jinak to pobývá smyslu.
|
||
peta Profil * |
#7 · Zasláno: 27. 2. 2006, 17:29:48
mno, ja mam ted tuto konstrukci:
$dotaz = "SELECT * FROM $tabulka WHERE `room_id` = '$room' ORDER BY `room_login` ASC, `room_login` LIKE 'g\_%' DESC, `room_login` LIKE 'guest\_%' DESC"; Jestli jsem to pochopil spravne, tak nejdriv seto seradi podle loginu, pak mi presune G_ nakonec a pak mi jeste presune GUEST_ uplne nakonec. Bohuzel zatim to vypada takto: nicku guest_ g_ - guest mam urceno, kdyz nezada prezdivku stava se z nej guest_cislo - g, kdyz prezdivku zada, tak je to g_prezdivka - nick, pokud je nalogovany v seznamce, automaticky se nick prebira (jinak tam je jeste nejaka chybka, ze mi nedovoli se nalogovat 2x na stejnou prezdivku za stejne IP a to ani v pripade nicku) Kajman_ Jo, a samotne podtrzitko, jak jsem vysondoval, znamena 1 jakykoliv znak, takze se musi lomitkovat. Zkusim to otocit jako Hugo, ale mam pocit, ze mi to nefungovalo. V podstate by mi stacila konstrukce: 1. serad podle abecedy 2. presun vsechny s podtrzitkem nakonec (protoze pri seradeni by melo byt vys g_ nez guest_) |
||
peta Profil * |
#8 · Zasláno: 27. 2. 2006, 17:41:19
Takhle je to OK, presne, jak to chci:
$dotaz = "SELECT * FROM $tabulka WHERE `room_id` = '$room' ORDER BY `room_login` LIKE 'guest\_%' ASC, `room_login` LIKE 'g\_%' ASC, `room_login` ASC"; Online * H aaa * H ccc * H guest(14) * H guest10 * H guest11 * H guest12 * H guest2 * H guest3 * H guest4 * H guest5 * H guest6 * H guest7 * H guest8 * H guest9 * g_ * g_666 * g_aaa * g_cc2 * g_cc3 * g_ccc * g_ccc3 * g_ddd * g_peta * g_peta1 * guest_13 * guest_15 * guest_16 * guest_17 mno, skoro, jsou nejak otocena cisla, ale tak serazoval to jako text,takze chapu poradi: a10 a11 a2 Kdyby nekdo vedel, jak to poresit, taky by to bylo fajn :) |
||
Kajman_ Profil * |
... ORDER BY
IF(`room_login` LIKE 'guest\_%',CHAR_LENGTH(`room_login`),0), `room_login` LIKE 'g\_%', `room_login`"; |
||
Kajman_ Profil * |
#10 · Zasláno: 27. 2. 2006, 19:01:10
A řadí se tak, že se porovná první definice a jen když je to stejné, tak se to kouká na tu další.
|
||
peta Profil * |
#11 · Zasláno: 27. 2. 2006, 20:49:41
Kajman_ Jasne, pocitat delku textu... Ale myslel jsem, ze je na to nejaka funkce, jako volba serazovaci metody.
Ale dobry, dik, tohle bude stacit. |
||
peta Profil * |
#12 · Zasláno: 28. 2. 2006, 13:22:57
ten dotaz mam ted takhle (sory zpozdeni, vzdy resim neco jine, mezitim nez to tam zkousim)
$dotaz = "SELECT * FROM $tabulka WHERE `room_id` = '$room' ORDER BY `room_login` LIKE 'guest\_%' ASC, `room_login` LIKE 'g\_%' ASC, CHAR_LENGTH(`room_login`), `room_login` ASC"; A funguje to uplne skvele aaa01 aaa2 aaa10 aaa009 - ale tady uz na tom nesejde (bych mohl z nicku filtrovat nuly, ale proc) |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0