Toon posts:

[MYSQL] SUM & Group By

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het is opzich heel simpel maar het lukt me gewoon niet:S.

Ik wil dus het veld factuur_bedrag bij elkaar opgeteld hebben dmv mysql.

nu heb ik deze query:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php 
$sQuery = sprintf(" 
            SELECT 
                factuur.*, 
                factuur.id                                            AS factuur_id, 
                opdrachten.*, 
                opdrachten.id                                        AS opdracht_id, 
                DATE_FORMAT(factuur.factuur_datum, '%%d-%%m-%%Y')  AS factuur_datum_ne, 
                factuur.status                                     AS factuur_status, 
                gebruikers.*, 
                gebruikers.naam                                    AS gebruikers_naam,     
                gebruikers.id                                      AS gebruikers_id, 
                DATE_FORMAT(gebruikers.datum, '%%d-%%m-%%Y')       AS datum_ne 
            FROM 
                factuur 
                    INNER JOIN 
                gebruikers 
                        ON (factuur.gebruikers_id = gebruikers.id) 
                    INNER JOIN 
                opdrachten 
                        ON (factuur.id = opdrachten.factuur_id) 
                    %s 
                %s 
            ", 
            (!empty($id)) ? sprintf("WHERE factuur.id = %d", $id) : '', 
            (!empty($orderby)) ? sprintf("ORDER BY %s %s ", $this->conn->qstr($orderby), $oco) : 'ORDER BY factuur.factuur_datum DESC' 
        ); 
?>


Als ik
SUM(factuur.factuur_bedrag) AS totaal_bedrag doe geeft die aan dat ik een GROUP BY moet doen. Logisch maar waar moet ik hem dan op sorteren?(welke GROUP BY )?

[ Voor 4% gewijzigd door Verwijderd op 04-03-2006 00:26 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:35

Creepy

Tactical Espionage Splatterer

Hier al eens gekeken? Welke informatie mis je daar?

Normaal gesproken groepeer je op alle velden die niet in een functie (sum, min, max etc) staan.

[ Voor 30% gewijzigd door Creepy op 04-03-2006 00:42 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
jawel maar ik moet alle velden hebben van alle drie de tabellen. Dit betekend toch niet dat ik op alle velden GROUP BY moet doen?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

Jawel. En dat staat toch ook in die FAQ? :o

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
ok, maar ik dacht dat er wel een makkelijke manier zou zijn maar niet dus.

Bedankt.

edit:

Ik maak er wel een aparte query bij die alles opteld.

[ Voor 28% gewijzigd door Verwijderd op 04-03-2006 01:22 ]


Verwijderd

Topicstarter
mm als ik alleen het totaal wilt hebben gaat het nog wel maar zodra ik bijv. het id er bij wilt heben gaat het fout.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    function getTotalFactuurBedrag()
    {
        $sQuery = sprintf("
                SELECT  
                    id,
                    SUM(factuur_bedrag) AS totaal_bedrag
                FROM
                    factuur
                GROUP BY
                    id
        ");
        if (($rQuery = $this->conn->getAll($sQuery))===false) {
             echo mysql_error();
            return false;
        }
        return current($rQuery);
    }


Wat doe ik fout?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

Wederom staat in diezelfde FAQ uitgelegd dat je in dit geval groepeert op een id, wat inhoudt dat je de som per id krijgt. Aangezien een id uniek is, zul je dus altijd 1 terugkrijgen. Als je een som van alle bedragen wil krijgen, dan kun je niet in dezelfde query ook id's op gaan vragen, tenzij je dus echt wil dat die som gegroepeerd wordt per id.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Ok, zo'n vermoenden had ik al maar ik wist het niet zeker.

Bedankt.
Pagina: 1