SirWayne: sum() Funktion

Hallo zusammen!
weiß jemand was an diesem Statment falsch ist?Und wenn ja kann er es mir vielleicht auch erklären ;)
SELECT ku_id,ku_nachname,ku_vorname, sum(vk_rechnung)
FROM kunde,getränke_verkauf WHERE ku_id=vk_kunde and sum(vk_rechnung)!='0' group by ku_id

invalid group function

  1. Hi,

    wenn du "group"-ierst, dann müssen alle Spalten die du "select"-ierst auch in der group by Klausel stehen, insofern sie nicht aggregiert (z.B. sum(), count(), ...) werden.

    Auf deutsch/SQL:

    SELECT ku_id, ku_nachname, ku_vorname, sum(vk_rechnung) AS vk_summe
    FROM kunde, getraenke_verkauf
    WHERE ku_id = vk_kunde
    AND vk_summe <> 0
    GROUP BY ku_id, k u_nachname, ku_vorname

    Da wohl ku_nachname und ku_vorname von der ku_id abhängen, sollte das Ergbnis das sein was du möchtest.

    Btw, Umlaute sind nicht so gut bei SQL ... wie überhaupt beim Programmieren.

    1. Hi,

      wenn du "group"-ierst, dann müssen alle Spalten die du "select"-ierst auch in der group by Klausel stehen, insofern sie nicht aggregiert (z.B. sum(), count(), ...) werden.

      Auf deutsch/SQL:

      SELECT ku_id, ku_nachname, ku_vorname, sum(vk_rechnung) AS vk_summe
      FROM kunde, getraenke_verkauf
      WHERE ku_id = vk_kunde
      AND vk_summe <> 0
      GROUP BY ku_id, k u_nachname, ku_vorname

      Da wohl ku_nachname und ku_vorname von der ku_id abhängen, sollte das Ergbnis das sein was du möchtest.

      Btw, Umlaute sind nicht so gut bei SQL ... wie überhaupt beim Programmieren.

      1. das ä macht keine probleme ,des hab ich ausversehen so angelegt ist auch bloß fürn test gedacht.
      2. wie du gesagt hast hängt ku_nachname + vorname von der id ab.
      3. ;) ;) ich weiß immer noch nicht was falsch war

      1. Hi,

        1. geht's so wie ich vorgeschlagen habe?

        2. dedlfix hat evtl. auch recht, kann sein, dass du die Bedingung vk_summe > 0 in die HAVING Klausel schieben musst .. da bin ich mir aber garnicht so sicher, kommt evtl. auch auf's DBMS an.

        3. naja, wenn's jetzt geht, dann war der Fehler eben, dass du mehrere Felder selektiert hast, aber nicht nach allen gruppiert hast bzw. aggregiert hast. Google oder ein Buch helfen da gerne ...

        1. Hi,

          1. geht's so wie ich vorgeschlagen habe?

          2. dedlfix hat evtl. auch recht, kann sein, dass du die Bedingung vk_summe > 0 in die HAVING Klausel schieben musst .. da bin ich mir aber garnicht so sicher, kommt evtl. auch auf's DBMS an.

          3. naja, wenn's jetzt geht, dann war der Fehler eben, dass du mehrere Felder selektiert hast, aber nicht nach allen gruppiert hast bzw. aggregiert hast. Google oder ein Buch helfen da gerne ...

          --> sorry hab grad erst weider rein geschaut mit dem having vk_summe>0 funktioniert es....
          --> hatte es am anfang auch so nur mit having by sehe ich ;) ;) kein wunder hat es nicht getan

      2. Hi,

        mein Vorgänger hat wohl recht. So sollte es gehen ... wenn's nicht davor schon ging.

        SELECT ku_id, ku_nachname, ku_vorname, sum(vk_rechnung)
        FROM kunde, getraenke_verkauf
        WHERE ku_id = vk_kunde
        GROUP BY ku_id, k u_nachname, ku_vorname
        HAVING sum(vk_rechnung) <> 0

  2. echo $begrüßung;

    weiß jemand was an diesem Statment falsch ist?Und wenn ja kann er es mir vielleicht auch erklären ;)
    SELECT ku_id,ku_nachname,ku_vorname, sum(vk_rechnung)
    FROM kunde,getränke_verkauf WHERE ku_id=vk_kunde and sum(vk_rechnung)!='0' group by ku_id
    invalid group function

    Gruppierfunktionen haben in der WHERE-Klausel nichts verloren, denn die Aufgabe von WHERE ist nur, die zu verwendenden Datensätze einzuschränken. Erst danach kommt die GROUP-BY-Klausel und anschließend kann man in der HAVING-Klausel auch auf die Gruppierung Bezug nehmen.

    echo "$verabschiedung $name";