Ankündigung

Einklappen
Keine Ankündigung bisher.

MYSQL SELECT mit DATE_FORMAT(DATE_ADD...

Einklappen

Neue Werbung 2019

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

  • MYSQL SELECT mit DATE_FORMAT(DATE_ADD...

    Hallo Jungs ...und hallo Ladies,

    Folgendes,

    Ich möchte die Einzahlungsscheine [ezs.`id`] abrufen, welche noch nicht, oder nicht vollständig bezahlt wurden.

    Pro [ezs.`id`] gibt es drei [ezs_sent.`datum_gesendet`].

    [ezs_sent.`id_ezs_sent_typ`] = 1

    [ezs_sent.`id_ezs_sent_typ`] = 2

    [ezs_sent.`id_ezs_sent_typ`] = 3

    Also kann es in Zeile 4 [ezs_sent.`datum_gesendet`]so gar nicht stimmen. Ich bekomme immer nur die 1 typ als Ausgabe.

    Die 1 im WHERE kann warieren zwischen 1, 2 oder 3. Aber nur mit der 1 erhalte ich eine Ausgabe.

    Ich hoffe es kann jemand helfen.

    PHP-Code:
    SELECT ezs.`id` AS `ezs_id`, 
           
    ezs.`id_user` AS `user_id`, 
           
    ezs.`rechnr`,
           
    DATE_FORMAT(DATE_ADD(ezs_sent.`datum_gesendet`, INTERVAL (SUM(time_rules.`tage_mahnung1`)) DAY), '%Y-%m-%d') AS `datum_mahnung1`, 
           
    ezs.`ezs_betrag` AS `zu_bezahlen`, 
           
    ezs.`bezahlter_betrag` AS `bezahlt`,
           CASE
               
    WHEN ezs.`bezahlter_betragIS NULL
               THEN ezs
    .`ezs_betrag`
               ELSE 
    ezs.`ezs_betrag` - ezs.`bezahlter_betrag`
           
    END AS `mahnungsbetrag`
    FROM ezs
    LEFT JOIN user ON ezs
    .`id_user` = user.`id`
    LEFT JOIN ezs_sent ON ezs.`id` = ezs_sent.`id_ezs`
    LEFT JOIN abo ON user.`id` = abo.`id_user`
    LEFT JOIN produkte ON abo.`id_produkt` = produkte.`id`
    LEFT JOIN time_rules ON produkte.`id_time_rules` = time_rules.`id`
    WHERE ezs_sent.`id_ezs_sent_typ` = '1'
    GROUP BY ezs.`id`
    HAVING `datum_mahnung1` <= CURDATE() AND (`bezahltIS NULL OR `bezahlt` < `zu_bezahlen`) 
    Danke


  • #2
    Jetzt habe ich selber etwas entdeckt. Die Gruppierung kann so nicht funktionieren.

    neu
    PHP-Code:
    GROUP BY ezs_sent.`id
    Wenn die Bedingungen eintreffen, dann wird es so richtig ausgegeben.

    Aber ich frage mich, ob das FROM ezs stimmt? Ich meine, kommt es überhaupt drauf an, wenn es eh gejoined ist?

    Kommentar


    • #3
      Probier's doch aus.
      Relax, you're doing fine.
      RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

      Kommentar


      • #4
        Zitat von santana2000 Beitrag anzeigen
        Jetzt habe ich selber etwas entdeckt. Die Gruppierung kann so nicht funktionieren.
        Exakt.

        Gemäß der SQL-Spec und der normalen Denkweise müssen alle Spalten des Resultates entweder aggregiert oder gruppiert werden. MySQL ist da blind und erkennt weder den logischen Fehler noch den Verstoß gegen die SQL-Spec und liefert etwas beliebiges - meist falsches.
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar

        Lädt...
        X