CSharp92 Geschrieben 29. November 2011 Geschrieben 29. November 2011 Guten Tag, habe ein Script gebastelt, läuft täglich via Cronjob. SELECT DISTINCT id, email FROM contact WHERE date BETWEEN (NOW() - INTERVAL 60 DAY) AND NOW() Ruft alle Daten der letzten 70 Tagen auf: num zum Problem: Danach wird überprüft ob Datensatz X länger als Y Tage schon besteht, wenn ja, dann wird eine E-Mail versendet. (Die Tage richten sich nach der ID, kann also unterschiedlich sein. Eine ID hat 5 Tage, kann aber auch 10 Tage haben.) Im Query löse ich das global mit der "höchsten"-Zahl die eine ID hat. Danach überprüfe ich, per PHP, ob das Datum abgelaufen ist bzw die Tage nach dem Datum vergangen sind. Leider ist das wohl nicht die beste Methode. Kennt einer eine bessere? Zusammenfassung: > Alle Daten der letzten 70 Tage > Datensatz wird überprüft, ob Datensatz X Tage vorbei ist > Wenn ja, wird Email versendet > Wenn nein, wird nichts getan btw: Azubi 1. Jahr. Bitte nicht hauen für Missbrauch von MYSQL / PHP
streffin Geschrieben 2. Dezember 2011 Geschrieben 2. Dezember 2011 Ich bin in Mysql jetzt nicht unbedingt top fit, aber so wie ich die Sache lese, muss in dem Query das Datum des Datensatzes 2x verglichen werden. Einmal gegen now() -60 Tage und einmal gegen now(). date_add sollte das ganze mit etwas weniger rechnen hinbekommen. Das nächste was performance kostet wäre das distinct. Wie sehen die Daten denn aus ? Warum vergleichst du in PHP das Datum mit, ich vermute der aktuellen Zeit ? Hast du je ID meherere Einträge und intressierst dich für den jüngsten / ältesten ? Gruß Sven
Dragon8 Geschrieben 6. Dezember 2011 Geschrieben 6. Dezember 2011 Steht in deiner Tabelle auch die Anzahl an Tagen pro ID die es dauert, bis diese ID als abgelaufen gilt und damit eine E-Mail versendet werden muss? Wenn ja, könnte man das auch nicht mit in die SQL Abfrage einbauen, sodass du in deinem Programm nur noch die E-Mails verschicken musst, und nicht mehr nochmal jeden Datensatz auf den Sachverhalt überprüfst.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden