Warum funktioniert die Abfrage hier nicht?

TribunM

Erfahrenes Mitglied
Hallo Freunde,

ich habe einen Query gebastelt, der mit verkaufte Artikel ausgeben soll und diese dann zusammenzählt. Als Besonderheit zählt ihr nur die Verkäufe, die nach einer Neurerstellung oder Wiedereinstellung aufkommen.

Das ganze funktioniert als normale Abfrage, aber ich wollte das in einer Prozedur einbauen, die ich regelmäßig in verschiedenen Abfragen aufrufe, so dass ich nicht jedes mal das neu machen muss.

Die Prozedur sieht so aus
Code:
BEGIN
DECLARE THE_VALUE BIGINT default 0;

SELECT SUM(C.QUANTITY) INTO THE_VALUE
  FROM (SELECT A.QUANTITY,
               A.SELL_DATE,
               (SELECT B.ACTION_DATE
                  FROM user_actions AS B
                 WHERE B.ITEM_ID = ITEM_ID AND B.ACTION_TYPE IN (x, y)
                ORDER BY B.ACTION_ID DESC
                 LIMIT 1)  AS ACTION_TIME
          FROM user_sells AS A
         WHERE A.ITEM_ID = ITEM_ID) AS c
 WHERE c.SELL_DATE >= c.ACTION_TIME;

RETURN THE_VALUE;
END

Die ITEM_ID wird an die Prozedur übergeben und nach Durchlauf soll eben die Summe der verkauften Artikel zurückgegeben werden. Die bekomme ich auch zurück aber die Zahl ist falsch.

Er ignoriert anscheinend den Subquery mit der ACTION_TIME und dementsprechend ist die zurückgegebene Zahl falsch. Als "normale" Abfrage funktioniert das aber ohne Probleme.

Woran kann das liegen, dass er den Subquery einfach ignoriert oder funktionieren subqueries nicht, ähnlich bei views und muss das in der Prozedur dann anders gelöst werden?

Freue mich schon über eure Erleuchtung, da ich gerade nicht mehr durchblicke :rolleyes:
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück