Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di sylvaticus
    Registrato dal
    Aug 2004
    Messaggi
    1,207

    [MySQL] - semplice query valori strambi su grande db

    Questa e' la prima volta che mi succede.. in mysql lancio una query molto semplice ma mi ritrovo con dei dati sballati.
    Ho un db (per me abbastanza grande.. 3 mil dati) di alcuni pagamenti con ogni record un pagamento. Ora voglio raggruppare gli importi per provincia, sesso ed eta'.

    No problem:
    codice:
    SELECT `COD_PROV` , `SEX` , `AGE` , sum( `IMP1` ) AS IMPORTO, count( * ) AS NUMDOM
    FROM `mytable`
    GROUP BY `COD_PROV` , 'SEX', `AGE`
    Il problema e' che mi restituisce:

    codice:
    COD_PROV SEX AGE	IMPORTO NUMDOM 
    TO	C	0	17674601.9178736	3015
    TO	M	20	3882.96991634369	10
    TO	W	21	25706.7499690056	19
    TO	M	22	21892.3701086044	21
    TO	W	23	204751.170439005	48
    ..
    Ovviamente ho anche donne di 20 anni o maschi di 21 anni nei dati, ma questi mi spariscono quando raggruppo.. sbaglio io o c'e' qualche cosa che dovrei sapere e non conosco ???
    <<contro i gas serra, spero più nelle nuove tecnologie pulite che nelle conferenze internazionali>>
    -- Steven Chu

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Sex C cos'è?
    Puoi postare un dump del create table?

  3. #3
    beh! sara' un errore di copia/incolla ma sempre errore e' per chi deve leggere e dare una risposta:

    GROUP BY `COD_PROV` , 'SEX', `AGE`


    le apici su sex che e' un campo e non una stringa.

    Anche il campo dei pagamenti dovrebbe essere un decimal e non un float.

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

  4. #4
    Utente di HTML.it L'avatar di sylvaticus
    Registrato dal
    Aug 2004
    Messaggi
    1,207
    scusate.. non riuscivo a connettermi...
    Grazie delle risposte, in effetti il problema erano gli apici del campo SEX.

    Ma scusate la domanda da perfetto niubbo.. come mai MySQL non mi ha restituito un errore? Come ha interpretato la query?
    ("C" e' "Company")
    <<contro i gas serra, spero più nelle nuove tecnologie pulite che nelle conferenze internazionali>>
    -- Steven Chu

  5. #5
    Utente di HTML.it L'avatar di sylvaticus
    Registrato dal
    Aug 2004
    Messaggi
    1,207
    ciao.. intanto grazie della risposta. C sta per "company".. in realta' sex e' "type".. un flag dove puo' essere C|M|W.. avevo messo sex per semplificare.

    Questa e' la struttura della tabella:
    [CODE]
    --
    -- Table structure for table `feaga_diretti_2009`
    --

    CREATE TABLE IF NOT EXISTS `feaga_diretti_2009` (
    `COD_PAG` char(4) NOT NULL,
    `NOM_PAG` tinytext NOT NULL,
    `CF` tinytext NOT NULL,
    `NOM_BEN` tinytext NOT NULL,
    `NOM_COM` tinytext NOT NULL,
    `CAP` char(5) NOT NULL,
    `IMP1` float DEFAULT NULL,
    `IMP2` float DEFAULT NULL,
    `VUOTO` int(11) DEFAULT NULL,
    `IMPT` float DEFAULT NULL,
    `COD_COMN` int(11) DEFAULT NULL,
    `COD_COMS` char(6) DEFAULT NULL,
    `COD_PROV` char(3) DEFAULT NULL,
    `COD_REG` char(2) DEFAULT NULL,
    `NOME_ISTAT2010` tinytext,
    `NOME_P2010` char(2) DEFAULT NULL,
    `NOME_REG2010` tinytext,
    `AGE` int(11) DEFAULT NULL,
    `TYPE` char(1) DEFAULT NULL,
    `FLAG_EST` int(11) DEFAULT NULL,
    KEY `IMP1` (`IMP1`),
    KEY `COD_COMN` (`COD_COMN`),
    KEY `COD_PROV` (`COD_PROV`),
    KEY `COD_REG` (`COD_REG`),

  6. #6
    mettere 'SEX' al posto di `SEX` non e' un errore di sintassi ma un errore di interpretazione a tue spese. A mysql il fatto di mettere il contenuto del campo oppure la stringa SEX e' proprio lo stesso e non lo considera un errore.

    La tabella che hai postato manca di chiave primaria. Usare float per dei valori monetari che hanno al max 2 cifre decimali porta solo a problemi di compatibilita' ed errori di precisione. Usa decimal(10,2) 10 cifre di cui due decimali.... oppure quante cifre ti servono al posto di 10. Sarebbe meglio usare enum('C','M','W') per il type.

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

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.