Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [MySQL]Raggruppare record secondo certe condizioni

    Allora, vi spiego semplicemente quello che dovrei fare, ovvero una ricerca sul mio forum.
    Quindi essendo una ricerca io devo cercare x parole dentro i record dei thread, però quando vado a mostrare l'elenco dei thread trovati, non mostro direttamente quelli, ma come fa questo forum, mostra il thread principale della discussione di cui fa parte il thread trovato.
    Capito no?

  2. #2
    non so se ho capito bene. Tu gestisci un forum, che ha una serie di thread. Ogni thread avrà una serie di risposte. Tu vuoi implementare una ricerca che cerca delle parole chiave all'interno delle risposte dei thread e riportare come risultato i thread dove sono comparse le parole chiave.

    Se è questo che intendevi la domanda che sorge spontanea è: come è organizzato il tuo db?

    Ipotizziamo che tu abbia una tabella Risposte organizzata con questi campi:

    utente - utente che ha postato
    data - data in cui ha postato
    testo - testo della risposta
    threadID - ID del thread a cui si riferisce la risposta (immagino che tu abbia un'altra tabella in cui memorizzi tutti i thread)

    la soluzione è

    codice:
    SELECT threadID
    FROM risposte
    WHERE 'condizione della ricerca'
    GROUP BY threadID
    ciaps

  3. #3
    Il problema è che la tabella ha il campo Topicid dove se è 0 vuol dire che è il thread principale, e se invece è diversa da 0, vuol dire che c'è l'id del thread principale, e quindi è una risposta a quel thread.
    Se potessi solo raggruppare per Topicid, non sarebbe un problema, il problema è che mi raggrupperebbe pure tutti i Topicid = 0, e questo non va bene!

  4. #4

  5. #5
    Originariamente inviato da darkmavis
    Uppino
    codice:
    SELECT threadID
    FROM risposte
    WHERE 'condizione della ricerca'
    AND Topicid > 0
    GROUP BY threadID


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Originariamente inviato da piero.mac
    codice:
    SELECT threadID
    FROM risposte
    WHERE 'condizione della ricerca'
    AND Topicid > 0
    GROUP BY threadID

    Si però in questo modo non mi ricerca fra i thread che sono quelli di inizio di una discussione, io invece devo ricercare pure fra quelli :master:

  7. #7
    Originariamente inviato da darkmavis
    Il problema è che la tabella ha il campo Topicid dove se è 0 vuol dire che è il thread principale, e se invece è diversa da 0, vuol dire che c'è l'id del thread principale, e quindi è una risposta a quel thread.
    Se potessi solo raggruppare per Topicid, non sarebbe un problema, il problema è che mi raggrupperebbe pure tutti i Topicid = 0, e questo non va bene!
    Che volevi dire qui nel "quote"????


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Originariamente inviato da piero.mac
    Che volevi dire qui nel "quote"????

    Mi sa che non mi sono spiegato bene

    Io devo ricercare in tutti i record, sia che abbiano TopicId == 0 oppure no, nel caso però topicid sia diverso da 0, devo mostrare il titolo del topicid collegato, e neanche qui ci sarebbero problemi, il problema sorge dal fatto che, se io in una discussione, quindi più thread riferiti ad una discussione base, trovo più volte la parola da me ricercata, la query mi sputerebbe fuori ovviamente più thread con lo stesso TopicId, quindi a questo punto lo dovrei raggruppare per TopicId, ma i thread principali di inizio discussione, che hanno tutti TopicId == 0, verrebbero raggruppati in un solo a loro volta, cosa che invece non dovrebbe essere fatta.
    In pratica dovrei fare un GroupBy solo ad una parte dei risultati, ovvero quelli con TopicId diverso da 0, è questo il mio problema principale!

  9. #9
    Lo leggo e mi pare di aver capito, lo rileggo e mi rendo conto che non e' vero (che ho capito).

    Tu hai dei record con un certo id == 0, cioe' senza relazioni. Se l'id > 0 significa che e' relazionato. Tu vuoi che se il certo id e' == 0 stampi il record, se invece il certo id > 0 stampi al posto suo il record collegato ma raggruppato nel caso ci siano piu' record collegati.

    E' cosi' la telenovela????

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Originariamente inviato da piero.mac
    Lo leggo e mi pare di aver capito, lo rileggo e mi rendo conto che non e' vero (che ho capito).

    Tu hai dei record con un certo id == 0, cioe' senza relazioni. Se l'id > 0 significa che e' relazionato. Tu vuoi che se il certo id e' == 0 stampi il record, se invece il certo id > 0 stampi al posto suo il record collegato ma raggruppato nel caso ci siano piu' record collegati.

    E' cosi' la telenovela????
    bravo!

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.