Ankündigung

Einklappen
Keine Ankündigung bisher.

Denkfehler beim MySQL Statement

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Denkfehler beim MySQL Statement

    Hallo,

    entschuldigt meine Frage, aber ich schreibe gerade ein Rechnungsystem für meine Firma. Nun stehe ich vor einem Denkfehler. Sämtliche MySQL Statements und PHP Funktionen sind bei mir weitestgehend vorhanden, nur stehe ich gerade vor einer verschlossenden Tür, die nicht aufgehen will.

    Mein Problem: Ich möchte aus meiner Datenbank alle Rechnungen aufrufen, die in diesem Monat erzeugt wurden. Das Funktioniert auch wunderbar. Nun will ich auch, das er alle Rechnungen aufruft, die in diesem Monat erzeugt wurden und zusätzlich alle die älter sind, als 9 Tage ab Erstellungszeitraum.

    Meine Idee war bisher:

    PHP-Code:
    $SqlQuery 'SELECT * FROM `Payments` WHERE MONTH(PQ_SqlTime) = MONTH(NOW()) AND YEAR(PQ_SqlTime) = YEAR(NOW()) AND `PQ_Status` = "0" AND `PQ_UnixTime` + 777600 < '.Time(); 
    Erläuterung:
    - PQ_SqlTime // Sql Zeitstempel
    - PQ_UnixTime // PHP Zeitstempel
    - PQ_Status // Bezahlstatus

    Nicht wundern, die Sql Variablen sind so geschrieben, sodass ich es auch nach langer Zeit weiter verstehe.
    Würde mich freuen, wenn mir einer ein Gedankenstoß geben könnte.


  • #2
    Mensch schreibe doch ordentlich. Deine Anforderung: geb mir ab dem 9ten eines Monats alle Rechnungen und die Tage davor alle, ausser die letzten x Tage des Vormonats. Macht irgendwie kein Sinn. Mit dem Bezahlstatus aus dem Query wirds dann aber klarer: Alle Rechnungen des Monats und alle unbezahlten Rechnungen die älter als 9 Tage sind. Dein Problem ist, dass du das und aus der Anforderung in die Bedingung übernimmst. In der Bedingung ist das und aber ein oder. Rechnung aus diesem Monat oder (Rechnung älter als 9 Tage und unbezahlt).

    Ansonsten: Redunanz ist zu vermeiden (PQ_SqlTime = PQ_UnixTime). http://de.wikipedia.org/wiki/Redunda...atenstrukturen
    Der Unixtimestamp ist ansich auch ungünstig in der Datenbank. Die Datentypen DATETIME/DATE sind zu bevorzugen. Die Datenbank ist darauf optmiert und bringt entsprechende Funktionalität mit.

    PHP-Code:
    PQ_SqlTime DATE_SUB(NOW(), INERVAL 9 DAY

    Kommentar


    • #3
      alle [Rechnungen] die älter sind, als 9 Tage ab Erstellungszeitraum.
      I don't get it…
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar

      Lädt...
      X