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
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
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

Zuletzt bearbeitet: