Avatar billede gatez Nybegynder
06. juli 2003 - 22:01 Der er 20 kommentarer og
1 løsning

Gennemsnit i MySQL

Hej!
Jeg skal have et gemmensnit ud fra en sql server ...det virker fint i access ...
men når jeg putter det over på My Sql server går det helt galt ...den udskriver
ikke nogle deceimaler .....jeg bruger den følge sql-string:

Set rs = Conn.Execute("SELECT avg(Stemmer) as snit from bilpoll WHERE BilID = '" & intID_Bil & "'")
strStemmerSnit =left(RS("Snit"), 4)
rs.Close

Hvordan for jeg den til at vise decimalerne ?

MVH
Gatez
Avatar billede gatez Nybegynder
06. juli 2003 - 22:11 #1
Feldt typen på "Stemmer" er sat i MySQL til at være "DECIMAL" er det der fejlen ligger ?
Avatar billede hossein Nybegynder
06. juli 2003 - 22:20 #2
hvis det er tal så skal du fjerne ' fra din variabel i din SQL sætning.
'" & intID_Bil & "'" ret til: " & intID_Bil & ""
hvis intID_Bil har tal/decimal som datatype.
Avatar billede hossein Nybegynder
06. juli 2003 - 22:26 #3
hvis du vil vise et tal med 4 cifre efter kommer så er:
<%=formatnumber(rs("snit"),4)%>
Avatar billede gatez Nybegynder
06. juli 2003 - 22:27 #4
Problemet er, at den afrunder stemmerne, så f.eks. 5.00 istedet for 5.34

Den udskriver altså ikke de sidste 2 decimaler...
Men den regner gennemsnittet fint nok ud bortset fra at den ikke skriver decimalerne ud.
Avatar billede hossein Nybegynder
06. juli 2003 - 22:30 #5
ok, fordi 5.34 er lige med left(RS("Snit"), 4) brug formatnumber.
Avatar billede gatez Nybegynder
06. juli 2003 - 22:31 #6
Hvis jeg bruger: formatnumber(rs("snit"),4)

Så skriver den gennemsnittet ud til at være: 5.0000
Avatar billede hossein Nybegynder
06. juli 2003 - 22:39 #7
kan man ikke mysql bruge TRUNCATE(avg(Stemmer),4) as Snit?
Avatar billede gatez Nybegynder
06. juli 2003 - 22:42 #8
Sådan:
Conn.Execute("SELECT TRUNCATE(avg(Stemmer),4) as Stemmer from bilpoll WHERE BilID = '" & intID_Bil & "'")

Den skriver desværre stadig kun 5.00
Avatar billede hossein Nybegynder
06. juli 2003 - 22:44 #9
skal det ikke være: TRUNCATE(avg(Stemmer),4) as Snit
Avatar billede gatez Nybegynder
06. juli 2003 - 22:47 #10
Jo men desværre stadig uden decimaler...

Conn.Execute("SELECT TRUNCATE(avg(Stemmer),4) as Snit from bilpoll WHERE BilID = '" & intID_Bil & "'")
Avatar billede nielle Nybegynder
06. juli 2003 - 22:47 #11
Din Access er sikkert dansk mens MySQL'en sikkert står til engelsk.

Dansk og engelsk bytter om på brugen af . og , i talsammenhæng:

Dansk: 100.015,50
Engelsk: 100,015.50
Avatar billede gatez Nybegynder
06. juli 2003 - 22:50 #12
--> nielle

Lyder som noget af det rigtige...
Hvordan ændre jeg det ?
Avatar billede gatez Nybegynder
06. juli 2003 - 22:51 #13
Jeg har prøvet sådan, men stadig uden decimaler:

strStemmerSnit = FormatNumber(rs("Stemmer"),2)
strStemmerSnit = Replace(strStemmerSnit,",",".")
Avatar billede hossein Nybegynder
06. juli 2003 - 23:03 #14
kig i selve tabel design om man vælger antal cifre også?
Avatar billede gatez Nybegynder
06. juli 2003 - 23:07 #15
Jeg har sat cifre til at være 11,10 nu.

Nu viser den gennemsnittet sådan: 5,0000000000
Avatar billede gatez Nybegynder
06. juli 2003 - 23:14 #16
Det nielle skriver er rigtigt...
Min access var på dansk og det virkede. Nu er har jeg skiftet til MySql på engelsk og nu virker det ikke mere...

Jeg forstår bare ikke:
Dansk: 100.015,50
Engelsk: 100,015.50
Avatar billede nielle Nybegynder
07. juli 2003 - 06:54 #17
På dansk bruges et komma til at skille heltalsdelen fra decimal delen. Og vi bruger et punktum til at dele heltalsdelen på i grupper af 2 cifre. Din Access er i denne sammenhæng "dansktalende"

Engelsktalende lande gør lige præcist det modsatte. Din MySQL er i denne sammenhæng "engelsktalende".

Hvis dit script fungere fint når databasen "taler" dansk så er der god mulighed for at noget går galt hvis den pludseligt begynder at "tale" engelsk. For så er der pludseligt byttet om på betydningen af . og ,.

Den funktion du skal bruge til at afrunde i dit ASP script hedder Round:

strStemmerSnit = Round(RS("Snit"), 2)

- eller alternativt FormatNumber:

strStemmerSnit = FormatNumber(RS("Snit"), 2)
Avatar billede gatez Nybegynder
07. juli 2003 - 19:24 #18
Hvilken type skal tabelen være ? DECIMAL 10,2 ?
Eller ?
Avatar billede nielle Nybegynder
07. juli 2003 - 19:43 #19
FLOAT
Avatar billede gatez Nybegynder
07. juli 2003 - 19:54 #20
Det her er meget mærligt...

Nu har jeg gjort som du skrev...

Med denne kode:
strStemmerSnit = Round(RS("Snit"), 2)
Udskriver den bare:  5

Med denne kode:
strStemmerSnit = FormatNumber(RS("Snit"), 2)
Udskriver den: 5,00

Min sql:
Set rs = Conn.Execute("SELECT avg(Stemmer) as snit from bilpoll WHERE BilID = '" & intID_Bil & "'")

Databasens design og indhold:

Id    BilId    BrugerId    Stemmer
1    109      21          3
2    109      21          10
3    109      21          2
4    109      21          8
5    109      21          6
6    109      21          3
7    109      21          6
8    109      21          1
9    109      21          2
10    109      21          2
11    109      21          8
12    109      21          9
13    109      21          10
14    109      21          4
15    109      21          5

Cellen der hedder "Stemmer" er sat til float(10,2)

Og det virker bare ikke...
Jeg er meget glad fordi du kigger på det... 1000 Tak!
Avatar billede gatez Nybegynder
29. oktober 2003 - 10:34 #21
Lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester