Eine Spalte stärker gruppieren als der Rest

  • SQL

    Eine Spalte stärker gruppieren als der Rest

    Hallo,

    ich habe vier Spalten (LaufNr, Produkt, Standort, aktuell), gruppiere über LaufNr und Produkt. dabei concateniert der Standort und summiert das aktuell Flag.
    Ich erhalte hier also eine Summe pro Produkt, und eine Zusammenfassung pro Produkt.
    Ich möchte daraus eine Zusammenfassung pro Lauf machen und weiterhin eine Summe pro Produkt.

    Ich verwende mysql. Das ist pro Produkt. Sieht sehr simpel aus:

    SQL-Abfrage

    1. Select LaufNr, Produkt, sum(aktuell) as `Anzahl`,
    2. Group_concat(Standort) as `Standorte`
    3. from mytable Group By LaufNr, Produkt


    Mein Wunsch wäre allerdings dies hier, nur ist das echt kompliziert und es verdoppelt die Laufzeit bei meinem Datensatz, gibts hier vielleicht einen günstigen Trick?

    SQL-Abfrage

    1. Select LaufNr, Produkt, sum(aktuell) as `Anzahl`,
    2. (Select Group_Concat(Standort) from mytable b where a.LaufNr = b.LaufNr and a.Produkt = b.Produkt Group By LaufNr) as `Standorte`
    3. from mytable a Group By LaufNr, Produkt


    Ich frage ja auch zweimal die Tabelle jetzt ab, obwohl in einer Abfrage schon alle Information drinsteckt, sie muss nur korrekt "formattiert" werden,
    also vielleicht irgendwie in dieser Art (Pseudo):

    SQL-Abfrage

    1. Select LaufNr, Produkt, sum(aktuell) as `Anzahl`,
    2. (Select Group_Concat(Standort) from ThisQueryGroupedByLaufNr) as `Standorte`
    3. from mytable a Group By LaufNr, Produkt


    Hoffe man kann es nachvollziehen

    Viele Grüße