Ik heb een probleem, ik heb allenmaal verschillende waardes.
van: -4.2 of 3.0 graden enz. alleen wat het probleem is,
Als ik probeer het laagste getal te pakken , dan pakt hij 0.0 graden :O en niet -4.2
Heeft iemand een iedee hoe ik dit kan aanpassen?
Ik heb een iedee dat het aan de database structuur ligt, Kan iemand mij misschien verder helpen?
Dit is nu de tabel die ik nu gebruik:
CREATE TABLE `weer` (
`id` int(150) NOT NULL auto_increment,
`graden` text collate latin1_general_ci,
`plaats` text collate latin1_general_ci,
`windkracht` text collate latin1_general_ci,
`windsnelheid` text collate latin1_general_ci,
`datum` text collate latin1_general_ci,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=0 ;
[quote]`windkracht` text collate latin1_general_ci,
`windsnelheid` text collate latin1_general_ci,
`datum` text collate latin1_general_ci,[/quote
Wat ben je hier van plan? Windkracht "pannekoek"? En windsnelheid "hamburger"? En wacht je van datum "Frankrijk" ? Dit zijn volgens jouw datamodel allemaal geldige waardes, jij wilt tenslotte text opslaan.
Geen wonder dat het dan fout gaat. Kies de JUISTE datatypes en jouw problemen verdwijnen als sneeuw voor de zon.
@Kima: Sinds wanneer zou een database niet met negatieve getallen kunnen werken?
@Kima: Heb je geen wiskunde op school? Volgens mij is 0.42 toch echt een heel ander getal dan -4.2.
Ik zal dan toch maar even moeite doen om het uit te leggen. Je veldtypes zijn helemaal fout. Een getal moet als een inttype aangegeven worden (BIGINT, INT, TINYINT, etc.). Een string moet met CHAR of VARCHAR aangegeven worden en een datum met DATETIME of DATE. Pas als je veldtypes goed staan, kun je optimaal gebruik maken van SQL.
ik had het zelfde probleem. Je veld type ( datatype ) is nu text.. Hierdoor leest ie het niet goed uit. Maar er eens INT van of, nee je hebt komma`s dus je moet er waarschijnlijk DOUBLES van maken. Hierdoor kun je het wel opslaan.
Geen doubles, gebruik een DECIMAL voor een getal met decimalen. Een double is geen exact getal, het is een benadering van een getal. Wanneer je daarmee gaat rekenen, kun je bijzondere resultaten krijgen.
Geen doubles, gebruik een DECIMAL voor een getal met decimalen. Een double is geen exact getal, het is een benadering van een getal. Wanneer je daarmee gaat rekenen, kun je bijzondere resultaten krijgen.
Bij Decimal , pakt hij het ook niet goed, Want dan rond hij telkens af op 1 getal
Ik kom er nog niet helemaal uit.
Want als ik het met int doe, als ik bijv. -1.1 invoer, rond hij af op -2? Hoe kan dat?
En doubles geeft een error
wil je misschien die tabel maken zodat het wel werkt?
CREATE TABLE `weer` (
`id` int(150) NOT NULL auto_increment,
`graden` text collate latin1_general_ci,
`plaats` text collate latin1_general_ci,
`windkracht` text collate latin1_general_ci,
`windsnelheid` text collate latin1_general_ci,
`datum` text collate latin1_general_ci,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=0 ;
id , graden , plaats, windkracht, windsnelheid en datum moet er inzitten.
Jezpur
Ik zal dan toch maar even moeite doen om het uit te leggen. Je veldtypes zijn helemaal fout. Een getal moet als een inttype aangegeven worden (BIGINT, INT, TINYINT, etc.). Een string moet met CHAR of VARCHAR aangegeven worden en een datum met DATETIME of DATE. Pas als je veldtypes goed staan, kun je optimaal gebruik maken van SQL.
pgFrank
Geen doubles, gebruik een DECIMAL voor een getal met decimalen. Een double is geen exact getal, het is een benadering van een getal. Wanneer je daarmee gaat rekenen, kun je bijzondere resultaten krijgen.