Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    MySql - ottenere ULTIMO commento di un utente raggruppando per l'id_discussione

    Salve Ragazzi,
    scrivo qui perchè sono 2 o 3 ore che mi scervello per trovare una soluzione al mio problema senza però cavare un ragno dal buco, mi spiego:
    devo gestire il profilo di un utente di un Forum ed ho una tabella "risposte" dove vengono aggiunti tutti i commenti alle varie discussioni.

    La tabella è formata dai campi:
    - id_risposta
    - id_discussione (alla quale è collegata)
    - titolo
    - testo
    - data_ora (campo DATETIME)
    - id_utente (che effettua il commento)

    Nel profilo di ogni utente vorrei visualizzare gli ultimi 4 commenti che ha postato, tuttavia vorrei evitare che fossero tutti (o quasi) della stessa discussione, quindi la query che mi servirebbe dovrebbe rispecchiare questo ragionamento: "Seleziona l'ULTIMO commento di questo utente per ogni discussione ove ha commentato"

    Onde evitare fraintendimenti, avendo ad esempio la tabella con questi valori:

    id_risposta | id_discussione | titolo | testo| data_ora | id_utente
    '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''
    5 | 10 | ... | .... | 14:12 | 2
    7 | 18 | ... | .... | 14:00 | 1
    1 | 11 | ... | .... | 14:18 | 2
    4 | 10 | ... | .... | 14:22 | 2
    9 | 10 | ... | .... | 14:02 | 1

    il risultato della query per id_utente = 2 dovrebbe essere:

    id_risposta | id_discussione | titolo | testo| data_ora | id_utente
    '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''
    4 | 10 | ... | .... | 14:22 | 2
    1 | 11 | ... | .... | 14:18 | 2

    Sto provando con
    codice:
    SELECT *
    FROM risposte
    WHERE id_utente = $id_utente
    GROUP BY id_discussione
    ORDER BY data_ora DESC
    e fa la distinzione per ogni ID_DISCUSSIONE solo che mi seleziona il PRIMO commento, e non l'ultimo..

    Come posso risolvere?
    Grazie!

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    una cosa tipo questa
    codice:
    SELECT * FROM risposte AS a
    WHERE id_utente = $id_utente and 
    data_ora = (SELECT MAX(data_ora) 
        FROM risposte AS b
        WHERE b.id_discussione = a.id_discussione and
        b.id_utente = a.id_utente)
    GROUP BY id_discussione
    ORDER BY data_ora desc

  3. #3
    Quote Originariamente inviata da clasku Visualizza il messaggio
    una cosa tipo questa
    codice:
    SELECT * FROM risposte AS a
    WHERE id_utente = $id_utente and 
    data_ora = (SELECT MAX(data_ora) 
        FROM risposte AS b
        WHERE b.id_discussione = a.id_discussione and
        b.id_utente = a.id_utente)
    GROUP BY id_discussione
    ORDER BY data_ora desc
    Esattamente, grazie mille clasku!

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    prego

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.