Autor | Zpráva | ||
---|---|---|---|
Icka Profil * |
#1 · Zasláno: 8. 9. 2014, 21:29:13 · Upravil/a: Icka
Ahoj, posledně jste mě tu tak pěkně poradili, tak zkusím zas:
Potřeboval bych seřadit data z MySql tak, že bych potřeboval podle priorit: A) pokud jsou nepřečtené zprávy tak priorita první B) dále pak podle stavu uživatele (1, 2, 3, 4 ...) no a v obou případech abecedně. Mám přitom T1: id | jmeno | stav (uzivatele) T2: id | uzivatel | zprava | precteno (zprávy) Tady mám současnej select: SELECT u.id, u.jmeno, u.stav, ( SELECT COUNT(id) FROM hh_messages WHERE od = u.id AND komu = $komu AND precteno = 0 ) AS nove FROM t_users AS u LEFT JOIN t_messages AS m ON m.od = u.id WHERE ( u.privilegia = 1 AND u.id != $komu ) OR ( m.komu = $komu ) GROUP BY u.id ORDER BY .... |
||
Joker Profil |
#2 · Zasláno: 8. 9. 2014, 23:25:31
ORDER BY (nove > 0) DESC, u.stav, u.jmeno ?
|
||
Icka Profil * |
#3 · Zasláno: 9. 9. 2014, 11:14:04
hm, tak to bylo jednodušší než jsem si myslel.. Nevim co sem v tom hledal. Děkuji mnohokrát..
Ještě bych se zeptal, vy případě že tedy jsou nové zprávy (nove > 0) jde v tomto případě seřadit data ne podle jména jako obvykle, ale podle T2.vlozeno ? Jde o časovej údaj vložení zprávy. Nedaří se mi to tam nikam napasovat :( |
||
juriad Profil |
ORDER BY (nove > 0), IF(nove > 0, vlozeno, stav), jmeno |
||
Icka Profil * |
#5 · Zasláno: 10. 9. 2014, 15:59:04
jj přidal jsem do selectu
SELECT MAX(vlozeno) FROM hh_messages WHERE od = u.id AND komu = $komu AND precteno = 0 ) AS posledni a pak jsem použil zmíněnou podmínku IF(nove>0,posledni,stav) DESC a zdá se že funguje jak má ;-) Děkuji.. Jen se ještě zeptám... mám teď totiž: SELECT id, jmeno, .... (SUBSELECT 1 FROM zpravy) as nove, (SUBSELECT 2 FROM zpravy) AS posledni FROM uzivatele LEFT JOIN zpravy .. jde mě o to, že mnohokrát připojuji tabulku se zprávama... Šlo by to nějako optimalizovat? |
||
Časová prodleva: 10 let
|
0