Visualizzazione risultati 1 fino 24 di 24

Discussione: Contare occorrenze in una tabella

  1. #1
    Guest

    Predefinito Contare occorrenze in una tabella

    ciao ragazzi.vorrei fare una cosa. contare le volte in cui ogni campo compare in una tabella.

    esempio:

    tabella commenti
    id_commento id_blog testo
    1..................2.......bla bla
    2..................2.......ffffff
    3..................1.......hhhhhhh
    4..................8.......llllllllll

    da cui si evince che:
    il blog 2 ha ricevuto 2 commenti
    il blog 1 ha ricevuto 1 commento
    il blog 8 ha ricevuto 1 commento...

    come si può fare?

  2. #2
    Guest

    Predefinito

    Codice:
    SELECT * FROM commenti WHERE id_blod = '2';
    devi cambiare il numero dell'id_blog che puoi anche generare in automatico.
    Poi basta un mysql_num_rows e trovi i risultati.

  3. #3
    Guest

    Predefinito

    eh ma così faccio mille mila query però...
    se per ogni commento lasciato devo fare una query... temo di non aver ben capito...

  4. #4
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    devi usare
    COUNT e GROUP BY id_blog

    http://dev.mysql.com/doc/refman/5.0/...functions.html

    e fai tutto con una query ;)
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  5. #5
    Guest

    Predefinito

    no, fai una query per ogni blog.

  6. #6
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    Citazione Originalmente inviato da jostock
    no, fai una query per ogni blog.
    decisamente meglio il group by che ho postato sopra
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da Evcz
    devi usare
    COUNT e GROUP BY id_blog

    http://dev.mysql.com/doc/refman/5.0/...functions.html

    e fai tutto con una query ;)
    mi potresti postare lo script?
    non ho mai usato il GROUP BY e quindi non so come gestirlo.
    grazie.

  8. #8
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    Codice:
    SELECT id_blog, COUNT(*) as num_commenti FROM commenti GROUP BY id_blog
    il risultato è una "tabellina" con i campi:
    id_blog, num_commenti

    dove id_blog contiene l'id del blog e num_commenti il numero di commenti in quel blog.
    Ultima modifica di Evcz : 03-06-2006 alle ore 14.03.03
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  9. #9
    Guest

    Predefinito

    e come risalgo al numero di occrrenze per ogni blog?

  10. #10
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da lsdforum
    e come risalgo al numero di occrrenze per ogni blog?
    Citazione Originalmente inviato da Evcz
    num_commenti il numero di commenti in quel blog.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  11. #11
    Guest

    Predefinito

    si ma num_commenti non è un vetttore o si?
    perchè se è una variabile singola, conterrà al massimo un solo numero, riferito ad un solo id...

    oddio sono cofunso :(

  12. #12
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Quando fai il ciclo per estrarre i dati dalla query userai $nomeriga['num_commenti']. Il valore non è unico.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  13. #13
    Guest

    Predefinito

    cioè?

    una cosa tipo:
    Codice PHP:
    $query = mysql_query("SELECT id_blog, COUNT(*) as num_commenti FROM commenti GROUP BY id_blog");
    while(
    $row = mysql_fetch_array($query))
    //poi che ci metto??
    //vorrei che il numero dei commenti apparisse vicino ad ogni commento inserito...

  14. #14
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Il codice che hai scritto è esatto. Quando vuoi scrivere il numero dei commenti devi stampare $row['num_commenti'] dentro al ciclo while.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  15. #15
    Guest

    Predefinito

    solo che non capisco come faccia a capire di quale blog si parli..

    voglio dire c'è una frase scritta che riceve 10 commenti.
    una'atra ne riceve 5...

    come fa a capire che il 10 va scritto vicino alla prima e non alla seconda?

  16. #16
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    In base all'id_blog.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  17. #17
    Guest

    Predefinito

    niente, non riesco a capire la logica del tutto e non riesco a farlo...

    provo a postare il codice:

    Codice PHP:
    $query = mysql_query("SELECT * FROM blogs, bloggati WHERE blogs.id_bloggato='$id_b'
    AND bloggati.id_bloggato=blogs.id_bloggato ORDER BY num_voti DESC, media DESC"
    ) or die(mysql_error());
    if(
    mysql_num_rows($query) <=0){
    $q2 = mysql_query("SELECT * FROM bloggati WHERE id_bloggato='$id_b'") or die(mysql_error());
    $row = mysql_fetch_array($q2);
    echo
    "<h1>|| Blog per $row[nome] $row[cognome] ||</h1>";
    echo
    "<table width=100% style='font-size: 10pt'>
    <tr><td width=30%><img src='http://lsdblogs.altervista.org/img/foto/
    $row[foto]'></td>
    <td align=left width=70%><form name=blogga id=blogga method=post action=./script/Sblog.php?id_b=
    $id_b>
    <fieldset class='blog'>
    <legend>|| Invia Blog...</legend>
    <table style='font-size: 10pt'>
    <tr><td><img src='http://lsdblogs.altervista.org/img/bullet.jpg'> Mittente:</td><td><input type=text name=mittente size=17></td></tr>
    <tr><td valign=top><img src='http://lsdblogs.altervista.org/img/bullet.jpg'> Blog:</td><td><textarea name=frase cols=15></textarea></td></tr>
    <tr><td> </td><td align=right><input type=submit name=submit value='|| Blogga'></td></tr>
    </table>
    </fieldset>
    </form></td></tr></table><br>"
    ;
    }
    while(
    $row = mysql_fetch_array($query)){
    $comm = mysql_query("SELECT id_blog, COUNT(*) as num_commenti FROM commenti GROUP BY id_blog");
    $riga = mysql_fetch_array($comm);
    echo
    "<table style='font-size: 10pt'><tr><td valign=top><font size='-1'><b>$i.</b></font></td><td valign=top>".nl2br($row['frase'])."</td><td></td></tr></table>
    <table align=center style='font-size: 8pt; color: #666666' width='100%'><tr><td width='30%' align=center>|| Media voti:<b>
    $row[media] </b></td><td align=center width='30%'><form method=post action='./script/vota.php?id_b=$row[id_blog]'>|| Vota:
    <select name=voto size=1 onChange='submit()'>
    <option selected></option>
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
    <option>7</option>
    <option>8</option>
    <option>9</option>
    <option>10</option>
    </select></form> </td><td width='30%'><form name='comm"
    .$i."' id='comm".$i."' method=post action='commenti.php?id_c=$row[id_blog]&id_b=$id_b'>|| <a href='#' onClick=\"invia('comm','$i')\" title='Consente di commentare questa frase'>Commenti </a>($riga[num_commenti])
    <input type=hidden name=testo value='
    $row[frase]'></form></td></tr></table>
    <p align=right><font size='-2' color=#666666>
    $row[data] Mittente: $row[mittente]</font></p><br><hr width=80%><br><br>";
    $i++;
    }
    continuo ad avere bisogno di aiuto :(

    mi spaete consigliare qualcosa?
    non riesco a conteggiare le cose :(
    Ultima modifica di lsdforum : 04-06-2006 alle ore 19.26.41

  18. #18
    Guest

    Predefinito

    Citazione Originalmente inviato da lsdforum
    come fa a capire che il 10 va scritto vicino alla prima e non alla seconda?
    Non è che "lo capisce", durante il ciclo stampa le info relative ad ogni risultato, quindi per ogni blog ti stamperà il relativo numero dei messaggi.
    Se vuoi anche il nome del blog oltre all'ID devi estrarre anche quel campo (basta aggiungere il nome del campo relativo, alla query postata da EVCZ).


    Ciaooo!!!!!

  19. #19
    Guest

    Predefinito

    non ci osno riuscito in quel modo :(
    ho dovuto fare un vettore che visualizza i conteggi.. anche se così li visualizza solo vicino a chi di commenti ne ha...

  20. #20
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Prova a vedere se così funziona, ammettendo che lo schema del database sia questo:

    BLOGS (id_blog, titolo_blog, contenuto_blog)
    COMMENTI (id_commento, id_blog => BLOGS, testo)

    Codice PHP:
    <?php
    $query
    = "SELECT BLOGS.id_blog, titolo_blog, COUNT(id_commento) AS num_commenti FROM BLOGS LEFT JOIN COMMENTI ON BLOGS.id_blog = COMMENTI.id_blog GROUP BY BLOGS.id_blog, titolo_blog";

    $result = mysql_query ($query, $db);

    echo (
    '<TABLE><TR><TH>Titolo blog</TH><TH>Commenti</TH></TR>');
    while (
    $line = mysql_fetch_array ($result))
    {
    echo (
    '<TR><TD>' . $line['titolo_blog'] . '</TD><TD>' . $line['num_commenti'] . '</TD></TR>');
    }
    echo (
    '</TABLE>');
    ?>
    L'output di questo codice dovrebbe essere una tabella in cui sono elencati i titoli di tutti i blog inseriti, ed il relativo numero di commenti. Grazie alla LEFT JOIN (che comprende i record della tabella BLOGS anche se non linkati a nessun record di COMMENTI), dovrebbero essere elencati anche i blog senza commenti (non so dirti se con il conteggio 0 o 1 perché non mi ricordo se il NULL sia contato - 1 - o no - 0 - come valore).

    Statemi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  21. #21
    Guest

    Predefinito

    intanto ti rignrazio per il tempo che mi hai dedicato.
    il problema non è tanto questo, anche se il tuo script potrebbe essermi di grande aiuto, qunto il fatto che dovrei inserirlo opportunamente nel codice che ho riportato due topic sopra...
    non so come inserirlo per poter dare una referenza corretta alla riga della tabella che è costruita il tuo codice con la pagina in cui tali risultati devono essere visualizzati.

    se noti, la pagina che creo contiene una serie di informazioni, il tuo docice stand-alone funziona bene, ma io devo inserirlo in un ciclo di fetch in cui visualizzo anche altre info e nel contempo dovrei ricavarmi il valore giusto del numero di commenti per visualizzarlo di fianco al link giusto...

    a meno che, non usi il tuo script per comporre il vettore e semplicemente ampliassi lo script precedente...

    PS: il tuo script mi da errore, però :(

    Codice PHP:
    SELECT blogs.id_blogCOUNT( * ) AS num_commenti
    FROM commenti
    LEFT JOIN COMMENTI ON BLOGS
    .id_blog = COMMENTI.id_blog
    GROUP BY commenti
    .id_blog
    ricevo:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COUNT( * ) as num_commenti FROM commenti LEFT JOIN COMMENTI ON B
    Ultima modifica di lsdforum : 06-06-2006 alle ore 16.14.28

  22. #22
    Guest

    Predefinito

    Mi sa che non hai copiato proprio bene la query di dementialsite.

    Codice PHP:
    $query = "SELECT BLOGS.id_blog, titolo_blog, COUNT(id_commento) AS num_commenti FROM BLOGS LEFT JOIN COMMENTI ON BLOGS.id_blog = COMMENTI.id_blog GROUP BY BLOGS.id_blog, titolo_blog";
    Comunque, nella tua query manca una virgola, e la prima tabella m'immagino deve essere BLOGS:

    Codice PHP:
    SELECT blogs.id_blog, COUNT( * ) AS num_commenti
    FROM blogs
    LEFT JOIN COMMENTI ON blogs
    .id_blog = commenti.id_blog
    GROUP BY blogs
    .id_blog
    Ultima modifica di tonnaer : 08-06-2006 alle ore 11.56.55

  23. #23
    Guest

    Predefinito

    grazie.
    ora funziona :)

  24. #24
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Visto che risolto, chiudo.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •