Salve a tutti,
ho una questione che non riesco a risolvere, magari è una stupidaggine, ve la sottopongo.
Allora, mettiamo di avere la tabella "messaggi" così impostata:
IDMSG | IDTHREAD | MITT | DEST | MSG | LETTURA
5 | 131 | 422 | 19282 | ciao | 0
7 | 131 | 19282 | 422 | ciao | 0
23 | 131 | 422 | 19282 | ciao | 0
25 | 131 | 19282 | 422 | ciao | 0
32 | 131 | 422 | 19282 | ciao | 1
Ora, come vediamo la discussione 131 ha 5 msg di cui 1 da leggere.
La mia query sarà qualcosa tipo:
La mia necessità è di avere una view della casella di posta con tutti messaggi raggruppati per utente/thread (come ormai si fa oggi) del tipo:Codice PHP:SELECT * FROM msg WHERE dest = 19282 GROUP BY idthread ORDER BY lettura DESC, idmsg
[NUOVO MSG] Da Nicketto1999
[MSG] Da Paoletta
[MSG] Da AlteaZzz
[MSG] Da Federico
Il problema del GROUP BY in questo caso è che lui mi prenderà il primo messaggio del thread che ho raggruppato, facendomi quindi perdere lo status di lettura o meno del messaggio.
Ad esempio, se faccio la select del thread 131 (quello che ho postato sopra) raggruppata, lui mi prenderà l'idmsg 5 e quindi non saprò mai se quel thread contiene un msg da leggere (come effettivamente è, vedi idmsg 32).
Come ne esco?
Spero di essere stato chiaro, chiedo scusa se non lo sono stato sufficientemente io.
Pensavo di fare 2 query con 2 cicli diversi, uno per i nuovi msg e l'altro per tutti quelli già letti, ma è una soluzione poco performante forse.
Grazie a tutti!
![]()
![]()
![]()

Rispondi quotando
