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

    Numero commenti al post

    Salve a tutti

    faccio una domanda veloce veloce, stupida stupida

    Nel mio attuale sito offro dei blog ai miei utenti.
    Ora a capo di ogni post, vorrei inserire il numero di commenti presenti per quel determinato post (come in tutti i blog) ... quindi una cosa del tipo:

    TITOLO
    TESTO BREVE
    Commenti (4)

    Considerando che chiaramente i commenti li ho in una tabella esterna ... sono costretto ad usare un LEFT JOIN per sapere il numero di commenti presenti per quel determinato post, vero?
    Siccome ho sempre paura che usare LEFT JOIN sia molto pesante per la macchina (considerando l'alto traffico del mio sito) c'è qualche stratagemma che rende questa operazione il più leggera possibile?

    Grazie mille :-)
    Perchè uso Maxthon? | Mi piace questa chat

  2. #2
    Ho avuto una piccola illuminazione (magari si fa proprio cosi, non so).

    Ogni volta che si inserisce un commento per un determinato post, aggiungo un +1 al commento stesso, che avrà chiaramente un campo INT "numerocommenti".
    Cosi quando faccio la query non devo fare delle JOIN ...

    che ne dite? Ho detto una sciocchezza?

    Certo, sarà un pò complicato da amministrare laddove si decidesse di cancellare un commento, o più commenti insieme su diversi post.
    Perchè uso Maxthon? | Mi piace questa chat

  3. #3
    Originariamente inviato da Bukowski
    Ho avuto una piccola illuminazione (magari si fa proprio cosi, non so).

    Ogni volta che si inserisce un commento per un determinato post, aggiungo un +1 al commento stesso, che avrà chiaramente un campo INT "numerocommenti".
    Cosi quando faccio la query non devo fare delle JOIN ...

    che ne dite? Ho detto una sciocchezza?

    Certo, sarà un pò complicato da amministrare laddove si decidesse di cancellare un commento, o più commenti insieme su diversi post.
    non è una sciocchezza..

    puoi tenere un campo con il numero di commenti nella definizione dell'articolo un pò come fanno i forum

    oppure fai un
    select count(id) from tabella_commenti Where id_news = $id_articolo

    quando fai l'estrazione dei commenti

    spero d'aver letto e capito bene la richiesta..
    Soluzioni di Web marketing, CMS, Temi wordpress, grafica e molto altro

    -----
    Ogni topic aperto con un titolo errato fa perdere un capello al moderatore che lo dovrà sistemare.. se non vuoi contribuire alla calvizia dei moderatori apri 3D a norma di regolamento, e prima fai una ricerca! No pvt tecnici!

  4. #4
    Originariamente inviato da ringo_mato
    non è una sciocchezza..

    puoi tenere un campo con il numero di commenti nella definizione dell'articolo un pò come fanno i forum

    oppure fai un
    select count(id) from tabella_commenti Where id_news = $id_articolo

    quando fai l'estrazione dei commenti

    spero d'aver letto e capito bene la richiesta..
    Una select pura non potrei farla visto che devo associare il numero di commenti al post ... quindi immagino di essere costretto ad utilizzare un JOIN LEFT

    La situazione sarebbe questa, per esempio ... pagina del blog:

    Articolo 1
    Ciao ciao
    Testo bla bla bla
    Commenti (0)

    Articolo 2
    Pippo chiama pluto
    Testo bla bla bla
    Commenti (4)

    Articolo 3
    Ieri sera sono stato ad un concerto
    Testo bla bla bla
    Commenti (2)


    L'unica mia "paura" è che se tengo un campo nella tabella dei post, col numero di commenti .. quando questi vengono cancellati, soprattutto per spam (e quindi saranno cancellati dal database) non avrò piu la "conta" giusta.
    Perchè uso Maxthon? | Mi piace questa chat

  5. #5
    Originariamente inviato da Bukowski
    Una select pura non potrei farla visto che devo associare il numero di commenti al post ... quindi immagino di essere costretto ad utilizzare un JOIN LEFT

    La situazione sarebbe questa, per esempio ... pagina del blog:

    Articolo 1
    Ciao ciao
    Testo bla bla bla
    Commenti (0)

    Articolo 2
    Pippo chiama pluto
    Testo bla bla bla
    Commenti (4)

    Articolo 3
    Ieri sera sono stato ad un concerto
    Testo bla bla bla
    Commenti (2)


    L'unica mia "paura" è che se tengo un campo nella tabella dei post, col numero di commenti .. quando questi vengono cancellati, soprattutto per spam (e quindi saranno cancellati dal database) non avrò piu la "conta" giusta.
    la devi naturalmente ricalcolare ogni volta che elimi qualche commento esattamente come succede nei forum sta a te scegliere la via che ti è piu' semplice e migliore in quel caso..
    sinceramente se non ho abbastanza articoli sulla pagina preferirei avere il totale già pronto senza caricare di query la pagina..
    Soluzioni di Web marketing, CMS, Temi wordpress, grafica e molto altro

    -----
    Ogni topic aperto con un titolo errato fa perdere un capello al moderatore che lo dovrà sistemare.. se non vuoi contribuire alla calvizia dei moderatori apri 3D a norma di regolamento, e prima fai una ricerca! No pvt tecnici!

  6. #6
    Si anche io preferirei fare cosi ... il problema è che ho/avrò decine di migliaia di post e di commenti. Sicuramente spesso mi capiterà, via db, di fare qualche DELETE di "massa" per via degli spammer ... in quel caso la "conta" andrebbe a farsi friggere.

    E' anche vero, che per una mole cosi medio alta di record e di traffico (il sito è molto trafficato) fare ogni volta una JOIN, ho paura di appesantire troppo la macchina.

    Non so proprio che decidere!
    Perchè uso Maxthon? | Mi piace questa chat

  7. #7
    Scusate se torno sul tema, ma stavo provando ora la query (col join) e non mi riesce, a questo punto mi viene pure il dubbio che sia possibile.

    Cioè .. se io ho 2 tabelle:

    # tabella POST
    id
    titolo
    testo

    # tabella COMMENTI
    idcomm
    idpost
    commento

    Come faccio a fare uscire un risultato del genere con 1 query?

    Titolo del mio post
    Testo del mio post
    Numero commenti

    Sto provando a fare un COUNT con la JOIN ma mi da sempre errore
    #1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

    Giustamente mi chiede di dargli un "Gruppo" per il count, ma se lo faccio poi mi vengono fuori solo i post che hanno il numero di commenti uguali, raggruppati. Un casino insomma



    Come si fa in questi casi?

    Grazie :master:
    Perchè uso Maxthon? | Mi piace questa chat

  8. #8
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    codice:
    SELECT p.titolo, p.testo, COUNT(*) AS num_commenti
    FROM POST p, COMMENTI c
    WHERE p.id = c.idpost
    GROUP BY p.id

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 © 2024 vBulletin Solutions, Inc. All rights reserved.