So che domande simili erano già state fatte prima, ma nessuna di queste aveva le stesse condizioni e le loro risposte non funzionavano per questo caso.Ricevi l'ultimo messaggio da ogni conversazione
La tabella contenente i messaggi si presenta così:
id | owner_id | recipient_id | content | created
1 | 1 | 2 | Hello | 2015-12-08 20:00
2 | 2 | 1 | Hey | 2015-12-08 20:10
3 | 3 | 1 | You there? | 2015-12-08 21:00
4 | 1 | 3 | Yes | 2015-12-08 21:15
5 | 4 | 1 | Hey buddy | 2015-12-08 22:00
E diciamo interrogo le conversazioni per User ID 1, il risultato atteso è:
id | owner_id | recipient_id | content | created
5 | 4 | 1 | Hey buddy | 2015-12-08 22:00
4 | 1 | 3 | Yes | 2015-12-08 21:15
2 | 2 | 1 | Hey | 2015-12-08 20:10
ho provato molte combinazioni, utilizzando JOINs e sottoquery ma nessuno di questi ha dato i risultati attesi.
Sto cercando una risposta in MySQL ma verrà utilizzata in un progetto sviluppato con CakePHP 2, quindi se c'è un modo specifico per Cake in questo modo sarebbe fantastico.
Questa è una delle query che ho provato ma non funziona. Credo che non sia nemmeno vicino a quello di cui ho bisogno.
SELECT
IF (owner_id = 1, recipient_id, owner_id) AS Recipient,
(
SELECT
content
FROM
messages
WHERE
(owner_id = 1 AND recipient_id = Recipient )
OR
(owner_id = Recipient AND recipient_id = 1)
ORDER BY
created DESC
LIMIT 1
)
FROM
messages
WHERE
owner_id = 1
OR
recipient_id = 1
GROUP BY
Recipient;
C'è una chiave univoca nel tuo tavolo? – Timekiller
Sì, ho aggiornato la domanda (erano stati visualizzati alcuni ID). – Camilo
Puoi gentilmente includere le query SQL che hai provato nella tua domanda? – summea