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

    [sql] Problema con COUNT e GROUP BY

    SELECT * FROM sottoscrizioni GROUP BY nome,cognome

    con questa prima query prendo un elenco evitando di far apparire più volte qualcuno che per errore si è sottoscritto più di una volta.

    Ora all'inizio viene indicato quante persone si sono sottoscritte, però, perchè il numero sia giusto, dovrei applicare GROUP BY anche al count. Solo che non funziona.

    SELECT count(*) AS tot FROM sottoscrizioni GROUP BY nome,cognome

    Qualche idea?

  2. #2
    edit

    letto male!
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  3. #3

    Re: [sql] Problema con COUNT e GROUP BY

    Originariamente inviato da mtx_maurizio
    SELECT * FROM sottoscrizioni GROUP BY nome,cognome

    con questa prima query prendo un elenco evitando di far apparire più volte qualcuno che per errore si è sottoscritto più di una volta.

    Ora all'inizio viene indicato quante persone si sono sottoscritte, però, perchè il numero sia giusto, dovrei applicare GROUP BY anche al count. Solo che non funziona.

    SELECT count(*) AS tot FROM sottoscrizioni GROUP BY nome,cognome

    Qualche idea?
    giuro che non ho capito la richiesta. Il count() essendo un raggruppamento vuole il group by od almeno un where, altrimenti ti conta tutti i record. Quindi la domanda a mia volta sara': cosa vuoi contare?

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

  4. #4
    Con la prima query visualizzo chi si è sottoscritto e con gorup by faccio in modo che chi si è sottoscritto più volte appaia una volta sola.

    All'inizio dell'elenco ho una frase tipo: si sono sottoscritti in xxx

    xxx è il numero di persone presenti nell'elenco che vedi sul video (che non corrisponde necessariamente a quello che c'è nel database) quindi passato da group by.

    Ora vorrei che xxx fosse uguale al numer di persone sull'elenco a video.

    Praticamente voglio fare un count ... però se sono doppi o tripli ecc me li conti una volta sola!

    Grazie

  5. #5
    Originariamente inviato da mtx_maurizio
    Con la prima query visualizzo chi si è sottoscritto e con gorup by faccio in modo che chi si è sottoscritto più volte appaia una volta sola.

    All'inizio dell'elenco ho una frase tipo: si sono sottoscritti in xxx

    xxx è il numero di persone presenti nell'elenco che vedi sul video (che non corrisponde necessariamente a quello che c'è nel database) quindi passato da group by.

    Ora vorrei che xxx fosse uguale al numer di persone sull'elenco a video.

    Praticamente voglio fare un count ... però se sono doppi o tripli ecc me li conti una volta sola!

    Grazie
    quello che disorienta e' il fatto che la query che fai e' corretta. Quindi nasce il dubbio di non aver capito la domanda.

    Hai due modi:

    1) select *, count(*) as tot from sottoscrizioni GROUP BY nome, cognome

    2) select * from sottoscrizioni GROUP BY nome, cognome
    e poi dopo la query conti le righe con mysql_num_rows()

    ma mi sfugge totalmente la differenza che segnali tra presenti nell'elenco, presenti nella tabella, presenti a video. Cioe' che significa e da cosa e contraddistinta questa differenziazione.

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

  6. #6
    Grazie Piero. come sempre mi sono perso in un bicchiere di acqua. mysql_num_row è la chiave. grazie

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.