Avatar billede askovdk Nybegynder
13. november 2010 - 11:24 Der er 11 kommentarer og
1 løsning

Limit virker ikke sammen med beregning af sum

Jeg bruger denne:


$qq = mysql_query("SELECT SUM(totalpris) AS total2 FROM faktura_butik_l WHERE fakturaid = '$id' LIMIT 0,15"); $rr = mysql_fetch_array($qq); $mellemregning = $rr["total2"];


Den lægger fint talene sammen, men LIMIT bliver ikke brugt, jeg har fx 17 rækker og den lægger alle 17 sammen i stedet for kun 15 ?
Avatar billede majbom Novice
13. november 2010 - 11:39 #1
når du bruger sum returneres kun én row og så er limit lige gyldigt.

prøv med:

SELECT sum(totalpris) AS total2 FROM (SELECT totalpris FROM faktura_butik_l = '$id' LIMIT 0,15)
Avatar billede webweaver Praktikant
13. november 2010 - 12:28 #2
Du kan muligvis bruge en subquery. (som splazz nævner)

Noget der ihvertfald virker, er hvis du henter dem ud og lægger dem sammen efterfølgende.

<?php

$qq = mysql_query("SELECT totalpris FROM faktura_butik_l WHERE fakturaid = '$id' ORDER BY id DESC LIMIT 15") or die (mysql_error());
       
    while ($data = mysql_fetch_array($qq)) {
       
        $array = array($data[0]);           
        $husk = array_sum($array) + $husk;
       
    }

    echo $husk;
       
?>
Avatar billede askovdk Nybegynder
13. november 2010 - 11:49 #3
Synes ikke jeg kan få den til at virke, har tilføjet lidt som jeg tror der mangler:

$qq = mysql_query("SELECT sum(totalpris) AS total2 FROM (SELECT totalpris FROM faktura_butik_l WHERE fakturaid = '$id' LIMIT 0,15)");

Men resultat bliver 0
Avatar billede askovdk Nybegynder
13. november 2010 - 12:30 #4
Jeg får denne fejl besked:

Every derived table must have its own alias
Avatar billede webweaver Praktikant
13. november 2010 - 12:34 #5
Når du prøver at bruge en subquery eller med det script jeg lige har postet?
Avatar billede askovdk Nybegynder
13. november 2010 - 12:41 #6
Det var med denne: jeg får fejlen:


$qq = mysql_query("SELECT sum(totalpris) AS total2 FROM (SELECT totalpris FROM faktura_butik_l WHERE fakturaid = '$id' LIMIT 0,15)");
Avatar billede askovdk Nybegynder
13. november 2010 - 12:48 #7
Jeg har også prøvet denne:

$qq = mysql_query("SELECT SUM(totalpris) FROM (SELECT * FROM faktura_butik_l) AS total2")or die(mysql_error());

Så får jeg INGEN fejl, men stadig intet output :-(
Avatar billede webweaver Praktikant
13. november 2010 - 12:54 #8
Og du kan ikke bruge det jeg har postet? Det virker...
Du vil måske have det i 1 SQL linie?
Avatar billede askovdk Nybegynder
13. november 2010 - 12:57 #9
Jo dit virker, så det må jeg bruge :-)

Ville bare gerne have det i en SQL linie, men det virker åbenbart ikke ??
Avatar billede webweaver Praktikant
13. november 2010 - 13:16 #10
Nææ, det ser ikke sådan ud. Men det burde nu kunne lade sig gøre. Jeg har ikke rigtig selv brugt subqueries før, så kan ikke komme med så meget input omkring det.

Jeg smider et svar, men du kan jo evt. lige vente med at acceptere, og se om der kommer en løsning på det andet.

God weekend :-)
Avatar billede majbom Novice
13. november 2010 - 17:16 #11
hmm, har heller ikke prøvet at bruge det før, fandt bare lidt på nettet :)

prøv med:

[div]
SELECT sum(totalpris) FROM (SELECT totalpris FROM faktura_butik_l = '$id' LIMIT 0,15) AS total2
[div]
Avatar billede askovdk Nybegynder
15. november 2010 - 20:29 #12
Det kan jeg heller ikke få til at virke, men lasses eksempel virker fint :-)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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