Schwierige Sache

Tommy57

Erfahrenes Mitglied
Hallo,

ich habe eine Tabelle mit verkauften Produkten einer Auktionsseite.

Ich will nun Ausgeben, wie ein Produkt in eine gewissen Zeitspanne weggegangen ist.

Code:
SELECT * FROM verkauft where id = 1 and datum between '2010-01-01' and '2010-12-31

Dieses Statement gibt mir alle Preise zurück, die ich brauche, nur das Problem ist, dass ich an Tagen, wo nix verkauft wurde auch nix zurück bekomme. Könnte man das Statement so umschreiben, dass mir an diesen Tagen der jeweils letzte Preis zurückgegeben wird?

Gruß
 
Hallo,

das ist glaub ich wesendlich einfacher in der applikation umzusetzen als in SQL.

Um es in SQL umzusetzen, brauchst du eine tabelle die alle datum werte enthält für die du daten haben willst. Dann musst du joinen, und mit einem Subquery die daten ermitteln.

in etwa so (ungetestet!):

SQL:
SELECT 
    (
        SELECT price 
        FROM sales x 
        WHERE x.date <= s.date 
        ORDER BY x.date DESC 
        LIMIT 1
    ), 
    s.date 
FROM dates d 
INNER JOIN sales s 
ON d.date = s.date 
WHERE d.date BETWEEN ...
 
Zuletzt bearbeitet von einem Moderator:
Danke chibisuke!

Ich schau mir das gleich mal an. Wieso ist das in der Applikation einfacher? Ich wollte das mit Hilfe der Datenbank lösen, weil ich davon ausgegangen bin, dass es so rum einfacher ist.

Wie könnte ich das denn in der Applikation lösen?

Gruß
 
Weil es sich in der datenbank nur mit einer zusätzlichen tabelle lösen läst die alle zeitpunkte beinhaltet die du haben willst.

In der applikation könntest du einach die zeitpunkte durchgehen, vergleichen ob der abstand zwischen dem alten und dem neuen zeitpunkt passt, und wenn nein zusätzliche zeitpunkte einfügen.

Wie das im einzelnen geht, hängt halt auch immer davon ab welche sprache du verwendest.
 
Ahh okay, vielen Dank für die Info. Ich hätte gedacht, dass wäre aus performance Gründen eleganter die schon so aus der DB zu holen. Ich werd es dann mit PHP lösen. Vielen Dank ^^
 

Neue Beiträge

Zurück