[DB2] Problem mit Select + Group by

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [DB2] Problem mit Select + Group by

    Moin zusammen,

    wir stehen grad ein bissel auf dem Schlauch was folgendes Statement angeht... wir brauchen eine Liste, in der jeder Artikel mit der zugehörigen Nummer einmal auftaucht, und dann alle zugehörigen Mengen aufaddiert werden (der einzelpreis ist nur zur Zusatzinfo)

    So siehts bisher aus:
    PHP-Code:
    SELECT  u.artikelnra.artikelbeschr,  u.mengea.einzelpreis
    FROM    t11ci11
    .umsatz ut11ci11.artikel a
    WHERE   u
    .artikelnr a.artikelnr
    GROUP by u
    .artikelnra.einzelpreisu.menge
    ORDER by u
    .menge descu.artikelnr asc 
    Daraus resultiert dann aber leider Fehler SQLSTATE 42803, SQLCODE -122
    Code:
    ********************* Text Below Copyright (c) 2004, IBM ********************* 
     -122 A SELECT STATEMENT WITH NO GROUP BY CLAUSE CONTAINS A COLUMN NAME        
            AND A COLUMN FUNCTION IN THE SELECT CLAUSE OR A COLUMN NAME IS         
            CONTAINED IN THE SELECT CLAUSE BUT NOT IN THE GROUP BY CLAUSE          
                                                                                   
     Explanation:  The SELECT statement contains one of these errors:              
                                                                                   
     o   The statement contains a column name and a column function in the         
         SELECT clause, but no GROUP BY clause.                                    
                                                                                   
     o   A column name is contained in the SELECT clause (possibly within a        
         scalar function) but not in the GROUP BY clause.                          
                                                                                   
         Note:  A HAVING clause specified without a GROUP BY clause implies a      
                GROUP BY with no columns. Thus, no column names are allowed in     
                the SELECT clause.
    wäre super, wenn uns hier jemand weiterhelfen könnte.

    Vielen Dank schonmal im Voraus,
    Gruß P2

  • #2
    Ja, das ist DB2. -> Richtig oder gar nicht.
    Alle Spalten vom SELECT müssen in den GROUP BY.
    Ausgenommen Agggregatfunktionen.

    MySQL ist da toleranter,
    da gibt's für so was nur eine Warnung in der Doku
    und wirft eventuell zufällig Spaltenwerte für SELECT aus,
    die nicht im GROUP BY stehen.

    Kommentar


    • #3
      damn, wer lesen kann ist klar im Vorteil

      So hätte es aussehen müssen, hat sich damit erledigt

      PHP-Code:
      SELECT u.artikelnra.artikelbeschrsum(u.menge), a.einzelpreis
      FROM t11ci11
      .umsatz ut11ci11.artikel a
      WHERE u
      .artikelnr a.artikelnr
      GROUP BY u
      .artikelnra.artikelbeschra.einzelpreis
      ORDER BY 3 desc
      u.artikelnr asc 
      Gruß P2

      EDIT:
      thx @fuser, das war mir beim 2. Lesen und Verstehen der Fehlermeldung dann auch aufgefallen

      Kommentar


      • #4
        Du willst aufsummieren, verwendest aber keine SUM-Funktion
        Manche DBMS lassen es nicht zu, dass Angaben von Spalten in Select existieren, ohne in Group by anzugeben, ausgenommen die in einer Aggregatfunktion. Dies ist auch bei DB2 der Fall, denn: "...OR A COLUMN NAME IS CONTAINED IN THE SELECT CLAUSE BUT NOT IN THE GROUP BY CLAUSE "

        Probier mal:
        PHP-Code:
        SELECT  u.artikelnra.artikelbeschr,  SUM(u.menge) AS mengea.einzelpreis
        FROM    t11ci11
        .umsatz ut11ci11.artikel a
        WHERE   u
        .artikelnr a.artikelnr
        GROUP BY u
        .artikelnra.artikelbeschra.einzelpreis
        ORDER BY menge desc
        u.artikelnr asc 
        EDIT:
        Sh*t, wieder zu langsam

        Kommentar

        Lädt...
        X