La Tavola:php mysql Raggruppa per arrivare ultimo disco, non primo disco
(`post_id`, `forum_id`, `topic_id`, `post_time`)
(79, 8, 4, '2012-11-19 06:58:08');
(80, 3, 3, '2012-11-19 06:58:42'),
(81, 9, 9, '2012-11-19 06:59:04'),
(82, 11, 6, '2012-11-19 16:05:39'),
(83, 9, 9, '2012-11-19 16:07:46'),
(84, 9, 11, '2012-11-19 16:09:33'),
La Query:
SELECT post_id, forum_id, topic_id FROM posts
GROUP BY topic_id
ORDER BY post_time DESC
LIMIT 5
I risultati:
[0] => [post_id] => 84 [forum_id] => 9 [topic_id] => 11
[1] => [post_id] => 82 [forum_id] => 11 [topic_id] => 6
[2] => [post_id] => 81 [forum_id] => 9 [topic_id] => 9
[3] => [post_id] => 80 [forum_id] => 3 [topic_id] => 3
[4] => [post_id] => 79 [forum_id] => 8 [topic_id] => 4
Il problema:
Come riscrivere la query in modo che io t restituisce post_id -> 83 invece di post_id -> 81?
Entrambi hanno le stesse ids forum o del topic, ma post_id -> 81 ha una data più vecchio di post_id -> 83.
Ma sembra che Raggruppa ottiene il 'prima' di registrazione e non il 'più recente ' uno.
Ho provato a cambiare la query per
SELECT post_id, forum_id, topic_id, MAX(post_time)
ma che restituisce sia post_id 81 e 83
Grazie per la spiegazione e il codice. Entrambe le query hanno funzionato. – shanebp
Ho usato la prima query, ma non mi sembra che abbia funzionato prima di cambiare ... WHERE post_time = ... TO ... WHERE post_time IN ... perché ho ottenuto più di un risultato indietro. –
Perché è una tale seccatura? usando SQL sarebbe semplicemente 'SELECT * FROM [table] GROUP BY [column]' che seleziona il più recente invece che il più vecchio, sembra logico vero? –