Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716

    [MYSQL] query su campo FLOAT non funziona..stò impazzendo!!

    ciao, la mia tabella è strutturata così:

    Codice PHP:
    CREATE TABLE `listino_prz` (
      `
    idint(11NOT NULL auto_increment,
      `
    idOggettoint(11NOT NULL default '0',
      `
    idListinoint(11NOT NULL default '0',
      `
    quantitafloat NOT NULL default '0',
      `
    prezzofloat NOT NULL default '0',
      `
    misuratext NOT NULL,
      `
    prezzoFint(11NOT NULL default '0',
      
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=
    ora, mi ritrovo a dover eseguire della query sul campo quantita...
    i dati che ho inserito, per test, sono questi:

    Codice PHP:
    id|idOggetto|idListino|quantita|prezzo|misura|prezzoF|
    291 39 0.42 KG. | 0
    504 
    39 0.012 KG. | 0
    505 
    39 0.1 KG. | 0
    506 
    39 0.3 KG. | 0
    477 
    39 0.5 51 KG. | 0
    507 
    39 0.8 KG. | 0
    292 
    39 0.41 KG. | 0
    294 
    39 0.39 KG. | 0
    295 
    39 0.38 KG. | 0
    296 
    39 0.37 KG. | 0
    297 
    39 0.36 KG. | 0
    298 
    39 0.35 KG. | 0
    299 
    39 0.34 KG. | 0
    300 
    39 0.33 KG. | 0
    301 
    39 0.32 KG. | 0
    293 
    39 10 0.4 KG. | 0
    479 
    39 11 KG. | 0
    347 
    39 12 KG. | 0
    480 
    39 12.5 KG. | 0
    348 
    39 13 KG. | 0
    349 
    39 16 7.36 KG. | 0
    495 
    39 666 55 |  | 0
    481 
    39 1000 KG. | 0
    482 
    39 3000 KG. | 
    e l'errore che mi stà facendo impazzire, è con questa query:
    SELECT id FROM listino_prz WHERE idListino='3' && idOggetto='39' && quantita='0.5'
    giustamente mi individua l'id 477, ma con

    SELECT id FROM listino_prz WHERE idListino='3' && idOggetto='39' && quantita='0.8'
    non mi trova niente!!
    idem per '0.012', '0.1' e altri..alcuni me li trova, altri no!
    tutti le 'quantita' intere, e quella 0.5, me le individua..tutte le altre no.
    perchè?

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    I campi float creano sempre problemi di approssimazione. Prova a sostituirlo con un campo di tipo decimal.

  3. #3
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    Originariamente inviato da nicola75ss
    I campi float creano sempre problemi di approssimazione. Prova a sostituirlo con un campo di tipo decimal.
    il problema è che i campi decimal hanno fissi i decimali, cioè se metto il campo DECIMAL(10,4) quello mi tiene sempre gli zeri..anche con numeri interi..se uso il double? avrò lo stesso problema?

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Che problema ti crea se mantiene gli zeri non significativi alla fine?
    Io ti consiglio di usare il tipo decimal e di evitare anche i double.

  5. #5
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    Originariamente inviato da nicola75ss
    Che problema ti crea se mantiene gli zeri non significativi alla fine?
    Io ti consiglio di usare il tipo decimal e di evitare anche i double.
    il problema è che dopo andando in stampa dovrei eliminare gli zeri che non necessari, e dovendo stampare a video un'enormità di dati per volta, non vorrei mi rallentasse..
    il campo double sembra funzionare, perchè me lo sconsigli?

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da thitan
    il problema è che dopo andando in stampa dovrei eliminare gli zeri che non necessari, e dovendo stampare a video un'enormità di dati per volta, non vorrei mi rallentasse..
    il campo double sembra funzionare, perchè me lo sconsigli?
    Per il campo double vale lo stesso discorso dei float. Sono dati approssimati e avrai quindi gli stessi problemi.

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Per rimuovere gli zeri finali (se proprio ne senti la necessità) prova questo trucco, cioè la prima query con i replace e i rtrim.

    L'articolo è per sql server ma funziona anche su mysql.
    http://www.databasejournal.com/featu...0894_2222111_2



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.