OR Klausel bei Group By

  • SQL

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von HRGS.

    OR Klausel bei Group By

    Hallo zusammen,

    ich habe folgendes Statement:

    SQL-Abfrage

    1. select i.name, sum(i.qty_ordered) as Anzahl, sum(i.qty_ordered * i.price) as Nettoumsatz
    2. from sales_flat_order_item i
    3. join sales_flat_order o on i.order_id = o.entity_id
    4. where (o.created_at between '2014-11-03' and '2015-03-08')
    5. and o.status not like '%holded%'
    6. and o.status not like 'canceled'
    7. and o.status not like '%closed%'
    8. and (o.store_id like '50' or o.store_id like '61')
    9. group by i.name
    10. order by o.store_id DESC


    Das statement soll mir für die Stores 50 und 60 jeweils alles skunamen gruppieren und die dazugehörige Summe über Anzahl und Umsatz geben. Das Problem ist jetzt, dass anscheinend die OR-Bedingung mit der Group By Funktion kollidiert. Für die Stores 50 und 60 werden nicht alle Zeilen aufsummiert. Wenn ich jeweils für Store 50 und 60 ein separates Statement mache ohne die OR-Bedingung kommen in Summe mehr Zeilen heraus, als wenn ich beide Stores zusammen wie in der obigen Abfrage abfrage. Das Zeilen fehlen passiert nur wenn ich die Group By Funktion. Ohne Group By gibt es keinen unterschied zwischen der Abfrage wie sie oben steht und zwei Abfragen jeweils für Store 50 und 60. Weiß jemand woran das liegen könnte?

    Vielen Dank schonmal

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Bitte les deinen Text vor dem abschicken das nächste mal durch, ist ja schrecklich teilweise.

    Wie der Name GROUP BY schon sagt, werden Zeilen mit dem "selben" Namen gruppiert, was bei aggregat Funktionen wie SUM() oder AVG() benötigt wird.

    Da die Zeilenanzahl variiert, gehe ich davon aus, das es mehrere "gleiche" sales_flat_order_item (was auch immer du damit meinst) gibt und diese gruppiert und aufsummiert werden.

    ES SEI DENN, die Summen stimmen nicht überein, dann stimmt definitv etwas nicht.
    Kontrolliere doch bitte die Gesamtsumme und korrigiere dich und/oder uns.