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

  • santana2000
    hat ein Thema erstellt MYSQL SELECT mit DATE_FORMAT(DATE_ADD....

    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

  • akretschmer
    antwortet
    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.

    Einen Kommentar schreiben:


  • VPh
    antwortet
    Probier's doch aus.

    Einen Kommentar schreiben:


  • santana2000
    antwortet
    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?

    Einen Kommentar schreiben:

Lädt...
X