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

    [MYSQL] DISTINCT e COUNT

    Ciao
    Ho questa Query:
    codice:
    SELECT  DISTINCT citta, prov, cap
    FROM  `sql_rubrica` 
    ORDER  BY citta
    Vorrei aggiungere anche un conteggio di queste combinazioni ma non riesco.
    Tra le varie prove ho provato anche con:
    codice:
    SELECT  DISTINCT citta, prov, cap, count( citta, prov, cap ) 
    GROUP  BY (citta, prov, cap)
    FROM  `sql_rubrica` 
    ORDER  BY citta
    ma non riesco ed ottengo sempre un diverso errore. Quest'ultima query mi restituisce:
    #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 ' prov , cap ) GROUP BY ( citta , prov , cap ) FROM `sql_rubrica` ORDER BY citta ' at line 1
    E' possibile avere un conteggio di una combinazione di questi campi?

    Grazie per l'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    23
    Ciao, il GROUP BY va dopo il FROM e WHERE (se presente) quindi dovresti fare questa query:

    codice:
    SELECT  citta, prov, cap, count() 
    FROM  `sql_rubrica` 
    GROUP  BY citta, prov, cap
    F.

  3. #3
    codice:
    SELECT citta, prov, cap, count(*) as tot
    FROM `sql_rubrica` 
    GROUP BY (citta, prov, cap)
    ORDER BY citta
    il group by va messo dopo il from ed eventuale where

    il distinct si estende su tutti i campi della select incluso il count() mentre il group by solo sui campi indicati. Non devono essere usati contemporaneamente, non e' un errore ma una assurdita'.

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

  4. #4
    Grazie ad entrambi.
    E' stata una mia superficialità. dovevo sapere che il group by va messo dopo il from ed eventuale where.
    Ma ho appena sperimentato la query
    codice:
    SELECT citta, prov, cap, count(  *  )  AS tot
    FROM  `sql_rubrica` 
    GROUP  BY citta, prov, cap
    ORDER  BY citta
    Pare che funzioni (almeno non da più errori).
    NB. Con le parentesi nella clausola GROUP BY mi da errore.
    Ora debbo solo verivicare (manualmente ovviamente) che i risultati siano esatti. Ma senz'altro debbono essere coerenti.
    Grazie.
    Ultima modifica di micdas; 24-10-2013 a 14:48

  5. #5
    Ariciao
    Una specificazione.
    Quella istruzione il count(*) messo in questa query si riferisce a tutti i campi dei record o ai soli campi indicati nelle clausola SELECT?

    Grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    23
    Ciao, il count fa riferimento solamente ai campi che hai indicato nel group by ovvero, in questo caso, ti indichera il numero di record che hanno la tripletta uguale.

    F.

  7. #7
    Grazie Fede_91
    Ecco, io invece ero incerto se era da considerare in relazione ai campi menzionati nella SELECT o a tutti i campi della tabella.
    Questa tua precisazione mi sarà utile per il futuro.


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.