Newsgroup: it.comp.www.php
Titolo: [mysql] aiuto con query...

Salve,
come da subject, mi serve un aiuto con una query, più che con il php. Ok, mi
sbrigo che già sono OT. Stò creando un forum in php, dove uno può lasciare
un messaggio nuovo o rispondere ad un altro. Ho creato una tabella che
contiene i messaggi strutturata in questo modo:
CD_MESSAGGIO: identificativo univoco di un messaggio
CD_MESSAGGIO_RIF_N: indica il messaggio di riferimento
DT_MESSAGGIO: data in cui viene spedito il messaggio
DS_ORA: l'ora in cui viene spedito il messaggio
DS_MESSAGGIO: il messaggio vero e proprio
In questo modo ho un numero univoco per ogni messaggio, usando il campo
cd_messaggio_rif_n posso tenere traccia dell'ordine delle risposte, i campi
data e ora sono utili sono a fini di ordinamento (più o meno).
Ho riempito questa tabella con un po di record simulando quella che potrebbe
essere una situazione reale. Ammettiamo di avere una cosa del genere:
+--------------+--------------------+--------------+--------+--------------+
| CD_MESSAGGIO | CD_MESSAGGIO_RIF_N | DT_MESSAGGIO | DS_ORA | DS_MESSAGGIO |
+--------------+--------------------+--------------+--------+--------------+
| 1 | NULL | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 2 | NULL | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 3 | 2 | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 4 | 1 | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 5 | NULL | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 6 | 5 | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 7 | 3 | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 8 | 1 | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
Prima domanda domanda:
come posso fare ad ordinare i record in modo da avere padre e figlio uno
sotto l'altro? Quello che a me servirebbe avere è una cosa del genere:
+--------------+--------------------+--------------+--------+--------------+
| CD_MESSAGGIO | CD_MESSAGGIO_RIF_N | DT_MESSAGGIO | DS_ORA | DS_MESSAGGIO |
+--------------+--------------------+--------------+--------+--------------+
| 1 | NULL | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 4 | 1 | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 8 | 1 | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 2 | NULL | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 3 | 2 | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 7 | 3 | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 5 | NULL | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
| 6 | 5 | XX/XX/XXXX | XX:XX | XX XXX X XX |
+--------------+--------------------+--------------+--------+--------------+
Seconda domanda:
tutto ciò dovrebbe avere i record ordinatai per data decrescente.
Come la fareste voi una cosa del genere? Il fatto di tenermi un codice di
riferimento e di creare questa struttura a scaletta padre->figlio si sta
rivelando mortale.
Idee? Suggerimenti?
Grazie, saluti...
--------------------------------
Inviato via 
http://usenet.libero.it

 Grazie, saluti...
Spero di esserti stata di aiuto, e soprattutto di non aver commesso 
errori  :)))
--
Nenélla
http://nenella.it

 errori :)))
Si, sei stata sicuramente motivo di riflessione :)) Appena riconfiguro la
mia macchina a casa ti faccio sapere che è uscito fuori. Tendenzialmente
però farò in modo di sfruttare più che posso lo potenzialità dell'sql.
Se hai osservazioni da fare...vai tranquilla :) Non escludo che quello che
ho detto io in realtà sia solo una puttanata, del resto, ripeto, ho fatto
tutto a mente.
Saluti...


 ho riinstallato il mio fido BSD.
Cosa usi su bsd per il php?
Esistono i ports di ambienti tipo easyphp e similari?
L.C.
^^^

 select annidata (una select dentro una select),
concordo, ma non basta utilizzare le left join?
Ciao.

 concordo, ma non basta utilizzare le left join?
E vabbè, ma in treno alle 7.30 della mattina, il concetto di left join è
qualcosa di troppo complicato, almeno per me :))


 Esistono i ports di ambienti tipo easyphp e similari?
Non c'ho mai fatto caso...posso guardare questa sera, ti faccio sapere.
Ovviamente nei ports trovi sia il php che mysql...e teoricamente li
dovrebbero esserci tutti i programmi eistenti per bsd...magari ci sono anche
questi. Guardo e ti dico.
Io uso FreeBSD, e se ci riesco questa sera mi aggiorno il sistema all'ultima
stable, albero dei ports compreso, quindi se li non c'è ninente...non ci
sono :))


 qualcosa di troppo complicato, almeno per me :))
:)
Ciao.

 
Ciao,
Nenella
http://nenella.it

 non fissarti sulle cose :)
Ho risolto facendo un misto delle due soluzioni :)
La tua funzione è buona per avere l'albero completo di tutti i messaggi
partendo da una radice. Ho scritto poi anche una parte di codice che mi
prende solo l'ultimo messaggio di un thread, che sia un figlio diretto del
padre o figlio di un figlio e qualunque sia la sua possizione nell'albero.
Grazie, saluti...


 come basa. 
Felice di esserti stata di aiuto :))
Nenélla