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

    Ok GROUP BY, ma se voglio scegliere il record da visualizzare?

    Ciao ragazzi ho bisogno di un aiutino:

    Ho una tabella che contiene tra le altre cose il nome degli allegati(immagini) relativi agli utenti e il nome degli utenti stessi.
    Se "Tizio" ha 10 allegati, nella tabella ho 10 righe con nome utente "Tizio" e i rispettivi allegati;
    io vorrei selezionare l'allegato più recente per singolo utente, in questo caso "Tizio", però se utilizzo "GROUP BY nome" mi viene restituito l'allegato più vecchio, non il più recente. Probabilmente combinando GROUP BY ed HAVING riesco a far qualcosa? Come?

    Pensavo a qualcosa tipo GROUP BY nome HAVING MAX(id_allegato) ma non credo sia una sintassi corretta e cmq non funziona

    Un aiutino?

  2. #2

  3. #3
    Eccomi di nuovo qua, è passato un po' di tempo ma non riesco ad andare avanti

    ringrazio nicola per il link ma non ho concluso niente.

    Vediamo se ce la faccio a spiegarvi un po' in dettaglio, senza confondervi le idee, di cosa si tratta:

    Sto facendo una pseudo-gallery per un forum smf-machine. Si tratta di un forum di grafica 3d quindi questa gallery ha lo scopo di mettere in risalto i thread delle persone che allegano ai messaggi i propri lavori.

    La sequenza di immagini (perchè di questo si tratta) è visualizzata al di sopra di tutti i forum, le immagini sono 6 e vengono selezionate da due forum distinti, 3 da un forum e 3 da un altro forum, faccio due query identiche che prelevano prima 3 img da un forum poi le altre 3 dall'altro forum..poi le metto insieme.


    Ho una tabella contenente gli allegati dei messaggi, fate attenzione agli ultimi 3/4 records (DESC):



    E una tabella con i messaggi, al solito gli ultimi 3/4 records (DESC):



    Vorrei selezionare le immagini allegate ai messaggi e mostrarle nella gallery ma ci sono delle eccezioni:

    1_L'immagine mostrata deve essere sempre la più recente.
    2_L'immagine mostrata deve essere sempre postata dall'utente che ha iniziato il topic.
    3_Se almeno due degli ultimi 3 topic sono stati iniziati dallo stesso utente deve essere considerato solamente l'ultimo topic aperto e l'ultima immagine allegata dell'utente che ha iniziato la discussione.

    La query che ho impostato è questa:

    Codice PHP:
    SELECT posterNameMAX(atc.ID_MSG), atc.filenamemsg.ID_MSGmsg.ID_TOPIC
    FROM 
    (smf_messages AS msg JOIN smf_topics AS tps ON msg.ID_TOPIC tps.ID_TOPIC)
    INNER JOIN smf_attachments AS atc ON atc.ID_MSG msg.ID_MSG
    WHERE msg
    .ID_MEMBER tps.ID_MEMBER_STARTED
    AND msg.ID_BOARD "5"
    GROUP BY msg.ID_TOPIC
    ORDER BY msg
    .ID_TOPIC DESC
    LIMIT 3 
    Sopra avete visto quali sono i records della tabella, io dovrei avere 3 records come segue:

    User: Lex84 , immagine allegata: carbon.jpg
    User: gurugugnola , immagine allegata: 1.jpg
    User: Icer , immagine allegata: beduin.jpg

    Lex84 è l'utente con più immagini allegate ad un topic, quindi i records dovrebbero essere raggruppati per prelevare solo la sua ultima immagine allegata, carbon.jpg appunto

    Invece il risultato che ho è questo:




    Spero di essere stato abbastanza chiaro e che qualcuno abbia un po' di tempo da dedicarmi, sono mesi che dietro a sta query senza nessun risultato
    grazie 1000

  4. #4

  5. #5
    Allora ho fatto una prova con questa query
    Codice PHP:
    SELECT filenamemsg.posterNameatc.ID_ATTACH
    FROM smf_attachments 
    AS atc
    JOIN smf_messages 
    AS msg ON atc.ID_MSG msg.ID_MSG
    JOIN smf_topics 
    AS tps ON tps.ID_TOPIC msg.ID_TOPIC
    WHERE msg
    .ID_MEMBER tps.ID_MEMBER_STARTED
    #GROUP BY msg.posterName
    ORDER BY atc.ID_ATTACH DESC 
    E sembra che così visualizzi tutto correttamente e nell'ordine corretto, solo che ovviamente se un utente ha molti messaggi con altrettanti allegati vengono visualizzati tutti, quindi ora dovrei andare con GROUP BY, no? Se lo decommento, l'utente con molteplici messaggi sparisce del tutto dai risultati della query, non raggruppa un bel niente.. dove sbaglio?

  6. #6

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    1
    sono più o meno nella tua stessa situazione, potresti postare la query che ti ha permesso di risolvere?

    grazie in anticipo

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.