fabricop
23-11-2011, 21:16
Ciao a tutti,
mi servirebbe una mano con delle query...
Ho questa tabella
+------------+-----------+--------------+---------+-----------+----------+--------+--------------+-------------+
| message_id | sender_id | recipient_id | message | subject | reply_id | unread | message_date | last_update |
+------------+-----------+--------------+---------+-----------+----------+--------+--------------+-------------+
| 1 | 2 | 1 | ciao | prova | 0 | 1 | 1321378006 | 1321498006 |
| 2 | 1 | 3 | ciao | prova | 0 | 1 | 1321408006 | 1321408006 |
| 3 | 4 | 1 | ciao | prova2 | 0 | 1 | 1321478006 | 1321478006 |
| 4 | 1 | 3 | aaa | prova 123 | 1 | 1 | 1321498006 | |
+------------+-----------+--------------+---------+-----------+----------+--------+--------------+-------------+
Dovrei ottenere una lista di messaggi inviati e ricevuti da un'utente (come la pagina messages di fb) ordinati per data e se un messaggio riceve una risposta, mi visualizzi l'ultima di queste invece del messaggio originario.
Avevo in mente di realizzare questa query
SELECT u.first_name, u.last_name, u.image_profile, m.*
FROM messages as m JOIN users as u ON u.user_id = IF(sender_id = ".$user_id.", recipient_id, sender_id)
WHERE (sender_id = ".$user_id." or recipient_id = ".$user_id.") and reply_id = 0
ORDER BY last_update DESC
e in seguito scorrere tutti i record ottenuti cercando l'ultima risposta avuta o scritta.
Secondo voi c'è un modo migliore per gestire la cosa?
mi servirebbe una mano con delle query...
Ho questa tabella
+------------+-----------+--------------+---------+-----------+----------+--------+--------------+-------------+
| message_id | sender_id | recipient_id | message | subject | reply_id | unread | message_date | last_update |
+------------+-----------+--------------+---------+-----------+----------+--------+--------------+-------------+
| 1 | 2 | 1 | ciao | prova | 0 | 1 | 1321378006 | 1321498006 |
| 2 | 1 | 3 | ciao | prova | 0 | 1 | 1321408006 | 1321408006 |
| 3 | 4 | 1 | ciao | prova2 | 0 | 1 | 1321478006 | 1321478006 |
| 4 | 1 | 3 | aaa | prova 123 | 1 | 1 | 1321498006 | |
+------------+-----------+--------------+---------+-----------+----------+--------+--------------+-------------+
Dovrei ottenere una lista di messaggi inviati e ricevuti da un'utente (come la pagina messages di fb) ordinati per data e se un messaggio riceve una risposta, mi visualizzi l'ultima di queste invece del messaggio originario.
Avevo in mente di realizzare questa query
SELECT u.first_name, u.last_name, u.image_profile, m.*
FROM messages as m JOIN users as u ON u.user_id = IF(sender_id = ".$user_id.", recipient_id, sender_id)
WHERE (sender_id = ".$user_id." or recipient_id = ".$user_id.") and reply_id = 0
ORDER BY last_update DESC
e in seguito scorrere tutti i record ottenuti cercando l'ultima risposta avuta o scritta.
Secondo voi c'è un modo migliore per gestire la cosa?