03. april 2007 - 14:27Der er
14 kommentarer og 1 løsning
sum fra forskellige felter i samme tabel
Hej eksperter Jeg har en tabel med en del felter. Hvordan laver jeg en sammentælling af nogle af disse felter, ikke alle, så jeg kan lave et samlet ialt beløb ? Ved ikke om der kan gøres noget smart med det, men jeg kan også sige at det er hver 2. felt jeg skal sammenlægge i denne tabel.
Sådan her ser den ud: CREATE TABLE `regnskab` ( `id` tinyint(4) NOT NULL auto_increment, `aptxt` text NOT NULL, `apoelg` text NOT NULL, `apoel` text NOT NULL, `folitxt` text NOT NULL, `folioelg` text NOT NULL, `folioel` text NOT NULL, `motriktxt` text NOT NULL, `motrikoelg` text NOT NULL, `motrikoel` text NOT NULL, `jespertxt` text NOT NULL, `jesperoelg` text NOT NULL, `jesperoel` text NOT NULL, `rodetxt` text NOT NULL, `rodeoelg` text NOT NULL, `rodeoel` text NOT NULL, `maaltxt` text NOT NULL, `maaloelg` text NOT NULL, `maaloel` text NOT NULL, `puyoltxt` text NOT NULL, `puyoloelg` text NOT NULL, `puyoloel` text NOT NULL, `lundetxt` text NOT NULL, `lundeoelg` text NOT NULL, `lundeoel` text NOT NULL, `robertxt` text NOT NULL, `roberoelg` text NOT NULL, `roberoel` text NOT NULL, `segatxt` text NOT NULL, `segaoelg` text NOT NULL, `segaoel` text NOT NULL, `timtxt` text NOT NULL, `timoelg` text NOT NULL, `timoel` text NOT NULL, `tuuretxt` text NOT NULL, `tuureoelg` text NOT NULL, `tuureoel` text NOT NULL, `torbtxt` text NOT NULL, `torboelg` text NOT NULL, `torboel` text NOT NULL, `heintxt` text NOT NULL, `heinoelg` text NOT NULL, `heinoel` text NOT NULL, `hansitxt` text NOT NULL, `hansioelg` text NOT NULL, `hansioel` text NOT NULL, `kenttxt` text NOT NULL, `kentoelg` text NOT NULL, `kentoel` text NOT NULL, `svendtxt` text NOT NULL, `svendoelg` text NOT NULL, `svendoel` text NOT NULL, `oelg` text NOT NULL, `oel` text NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=97 ;
tallene der kommer ind i felterne der slutter med oelg skal ligges sammen. Jeg vil så printe/echo resultatet i min php tabel
som du kan se poster jeg selv lige for tiden det samlede resultat i henholdsvis oel og oelg sidst i tabellen. Disse to vil jeg gerne have slettet og så lave en sql forspørgsel istedet til at gøre det automatisk ...
hehe ... nåå ja. Jamen jeg laver dem bare om til tal felter. Hvad er det så lige de skal være ? Og jeg vil gerne kunne skrive tale som 1,0 10,5 så de kan lægges sammen til 11,5 f.eks. ....
Har nu fået det hele rettet til så det istedet hedder:
CREATE TABLE `regnskab` ( `id` tinyint(4) NOT NULL auto_increment, `aptxt` text NOT NULL, `apoelg` decimal(2,1) NOT NULL default '0.0', `apoel` decimal(2,1) NOT NULL default '0.0', `folitxt` text NOT NULL, `folioelg` decimal(2,1) NOT NULL default '0.0', `folioel` decimal(2,1) NOT NULL default '0.0', `motriktxt` text NOT NULL, `motrikoelg` decimal(2,1) NOT NULL default '0.0', `motrikoel` decimal(2,1) NOT NULL default '0.0', `jespertxt` text NOT NULL, `jesperoelg` decimal(2,1) NOT NULL default '0.0', `jesperoel` decimal(2,1) NOT NULL default '0.0', `rodetxt` text NOT NULL, `rodeoelg` decimal(2,1) NOT NULL default '0.0', `rodeoel` decimal(2,1) NOT NULL default '0.0', `maaltxt` text NOT NULL, `maaloelg` decimal(2,1) NOT NULL default '0.0', `maaloel` decimal(2,1) NOT NULL default '0.0', `puyoltxt` text NOT NULL, `puyoloelg` decimal(2,1) NOT NULL default '0.0', `puyoloel` decimal(2,1) NOT NULL default '0.0', `lundetxt` text NOT NULL, `lundeoelg` decimal(2,1) NOT NULL default '0.0', `lundeoel` decimal(2,1) NOT NULL default '0.0', `robertxt` text NOT NULL, `roberoelg` decimal(2,1) NOT NULL default '0.0', `roberoel` decimal(2,1) NOT NULL default '0.0', `segatxt` text NOT NULL, `segaoelg` decimal(2,1) NOT NULL default '0.0', `segaoel` decimal(2,1) NOT NULL default '0.0', `timtxt` text NOT NULL, `timoelg` decimal(2,1) NOT NULL default '0.0', `timoel` decimal(2,1) NOT NULL default '0.0', `tuuretxt` text NOT NULL, `tuureoelg` decimal(2,1) NOT NULL default '0.0', `tuureoel` decimal(2,1) NOT NULL default '0.0', `torbtxt` text NOT NULL, `torboelg` decimal(2,1) NOT NULL default '0.0', `torboel` decimal(2,1) NOT NULL default '0.0', `heintxt` text NOT NULL, `heinoelg` decimal(2,1) NOT NULL default '0.0', `heinoel` decimal(2,1) NOT NULL default '0.0', `hansitxt` text NOT NULL, `hansioelg` decimal(2,1) NOT NULL default '0.0', `hansioel` decimal(2,1) NOT NULL default '0.0', `kenttxt` text NOT NULL, `kentoelg` decimal(2,1) NOT NULL default '0.0', `kentoel` decimal(2,1) NOT NULL default '0.0', `svendtxt` text NOT NULL, `svendoelg` decimal(2,1) NOT NULL default '0.0', `svendoel` decimal(2,1) NOT NULL default '0.0', `oelg` decimal(2,1) NOT NULL default '0.0', `oel` decimal(2,1) NOT NULL default '0.0', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=97 ;
decimal(2,1) er nok for lidt. Det betyder at du kun kan gemme op til tallet 9.9
Første del angiver det totale antal cifre i tallet inklusiv det efter kommaet. Hastigheds/plads mæssig er der intet, der forhindre dig i at sætte den op. De kommer kun til at fylde et par bit ekstra.
Se evt også den sidste kommentar i det link jeg gav dig. Den fortæller netop at med decimal(2,1) vil man ikke kunne gemme tallet 10, selv om det kun kræver to cifre. Kommadelen vil nemlig altid blive medregnet.
Nu har jeg sat den til 15,1 og går så ud fra den kan indeholde op til f.eks. 50,5 eller 99,9 for den sags skyld ??
CREATE TABLE `regnskab` ( `id` tinyint(4) NOT NULL auto_increment, `aptxt` text NOT NULL, `apoelg` decimal(15,1) NOT NULL default '0.0', `apoel` decimal(15,1) NOT NULL default '0.0', `folitxt` text NOT NULL, `folioelg` decimal(15,1) NOT NULL default '0.0', `folioel` decimal(15,1) NOT NULL default '0.0', `motriktxt` text NOT NULL, `motrikoelg` decimal(15,1) NOT NULL default '0.0', `motrikoel` decimal(15,1) NOT NULL default '0.0', `jespertxt` text NOT NULL, `jesperoelg` decimal(15,1) NOT NULL default '0.0', `jesperoel` decimal(15,1) NOT NULL default '0.0', `rodetxt` text NOT NULL, `rodeoelg` decimal(15,1) NOT NULL default '0.0', `rodeoel` decimal(15,1) NOT NULL default '0.0', `maaltxt` text NOT NULL, `maaloelg` decimal(15,1) NOT NULL default '0.0', `maaloel` decimal(15,1) NOT NULL default '0.0', `puyoltxt` text NOT NULL, `puyoloelg` decimal(15,1) NOT NULL default '0.0', `puyoloel` decimal(15,1) NOT NULL default '0.0', `lundetxt` text NOT NULL, `lundeoelg` decimal(15,1) NOT NULL default '0.0', `lundeoel` decimal(15,1) NOT NULL default '0.0', `robertxt` text NOT NULL, `roberoelg` decimal(15,1) NOT NULL default '0.0', `roberoel` decimal(15,1) NOT NULL default '0.0', `segatxt` text NOT NULL, `segaoelg` decimal(15,1) NOT NULL default '0.0', `segaoel` decimal(15,1) NOT NULL default '0.0', `timtxt` text NOT NULL, `timoelg` decimal(15,1) NOT NULL default '0.0', `timoel` decimal(15,1) NOT NULL default '0.0', `tuuretxt` text NOT NULL, `tuureoelg` decimal(15,1) NOT NULL default '0.0', `tuureoel` decimal(15,1) NOT NULL default '0.0', `torbtxt` text NOT NULL, `torboelg` decimal(15,1) NOT NULL default '0.0', `torboel` decimal(15,1) NOT NULL default '0.0', `heintxt` text NOT NULL, `heinoelg` decimal(15,1) NOT NULL default '0.0', `heinoel` decimal(15,1) NOT NULL default '0.0', `hansitxt` text NOT NULL, `hansioelg` decimal(15,1) NOT NULL default '0.0', `hansioel` decimal(15,1) NOT NULL default '0.0', `kenttxt` text NOT NULL, `kentoelg` decimal(15,1) NOT NULL default '0.0', `kentoel` decimal(15,1) NOT NULL default '0.0', `svendtxt` text NOT NULL, `svendoelg` decimal(15,1) NOT NULL default '0.0', `svendoel` decimal(15,1) NOT NULL default '0.0', `oelg` decimal(15,1) NOT NULL default '0.0', `oel` decimal(15,1) NOT NULL default '0.0', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=97 ;
Hvordan laver jeg så en sql forspørgsel på tabellen og får den til at summere disse felter sammen så jeg kan poste denne sum med en echo ?
leder og leder på nettet men syntes ikke helt jeg kan finde en nem forklaring på koden ....
<?php include("dbconnect.php"); $getregnskab = mysql_query("select * from regnskab ORDER BY id DESC limit 1"); while($r=mysql_fetch_array($getregnskab)){ extract($r); echo("<table style=\"width: 600px;\"> bla bla bla ... en tabel opsætning. I en kolonne i min tabel vil jeg så gerne ligge disse sammen. Er det så bare i denne kolonne jeg skriver: <td style=\"width: 100px; background-color: #999999; text-align: right;\"> select $apoelg+$folioelg+$motrikoelg+$jesperoelg as total from regnskab</td>
både og. Du kan lægge dem sammen i PHP: <? echo $apoelg+$folioelg+$motrikoelg+$jesperoelg ?>
Men du kan også gøre det i din select, også udskrive total: $getregnskab = mysql_query("select *, apoelg+folioelg+motrikoelg+jesperoelg as total from regnskab ORDER BY id DESC limit 1"); ... <? echo $total ?>
Har dog lige et lille problem. Hvis jeg poster 1,5 eller 2,5 ... så indsætter den kun 1,0 og 2,0 ... og sum bliver så tre, hvor jeg gerne vil have sum til at blive 4 ... hvad er det der står forkert så i min tabel ?
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.