Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP MySql Datumsabfrage

Einklappen

Neue Werbung 2019

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

  • [Erledigt] PHP MySql Datumsabfrage

    Hallo Ich habe eine Frage bezüglich einer Ausgabe.
    Habe eine Table mit "Anzeigen" und eine mit einer "Laufzeit"
    Jetzt habe ich zB zu den "Anzeigen" mehrere "Laufzeiten". Immer wenn die Anzeige gestartet wird, wird ein Eintrag unter "Laufzeiten" hinzugefügt.

    zB. Anzeige "Krimskrams 5kg"
    Dazu habe ich in der Vergangenheit Laufzeiten:
    - 1. Jänner 2014 bis 1. Feber 2014
    - 1. März bis 1. April 2014
    - 1. August bis 15. September 2014

    (Abgespeichert in Spalten datum_von und datum_bis)

    Meine Frage. Ich habe nun eine Ausgabe der Anzeigen wo ich mit LEFT JOIN in die "Laufzeiten" verknüpfe.
    Habe dann auch bei der Ausgabe ein GROUP BY "Anzeige".ID
    Will bei der Ausgabe dann zusätzlich das aktuelle Datum angeben: "Laufzeit".datum_ende

    Ich möchte nun aber eine Ausgabe machen mit Abgelaufene Einträge, bei denen jedoch berücksichtigt wird, dass nicht schon ein neuer Eintrag vorhanden ist, der gerade online ist.

    Code:
    "SELECT $db_anzeige.*,$db_bezirke.*, $db_laufzeit.*, $db_anzeige.id AS id FROM $db_anzeige 
    		LEFT JOIN $db_bezirke ON $db_bezirke.id=$db_anzeige.ort_id
    		LEFT JOIN $db_laufzeit ON $db_anzeige.id=$db_laufzeit.anzeige_id
    		WHERE $db_laufzeit.datum_ende<'$_heutedatum' GROUP BY $db_anzeige.id ORDER BY $db_laufzeit.datum_ende ASC LIMIT 0,5"
    Hier bekomme ich die abgelaufenen Aufgelistet, jedoch wird hier nicht geprüft ob ein Eintrag zu der Anzeige vorhanden ist, der aktuell online ist.

    Ich hoffe Ihr versteht mein Problem?

    lg


  • #2
    Zitat von mqs Beitrag anzeigen
    Hier bekomme ich die abgelaufenen Aufgelistet, jedoch wird hier nicht geprüft ob ein Eintrag zu der Anzeige vorhanden ist, der aktuell online ist.

    Ich hoffe Ihr versteht mein Problem?

    lg
    Hoffe ich auch. Vielleicht so:

    Code:
    test=*# select * from anzeigen ;
     id |    titel
    ----+-------------
      1 | krims krams
      2 | bull shit
    (2 rows)
    
    Time: 0,262 ms
    test=*# select * from laufzeit ;
     a_id |         von_bis
    ------+-------------------------
        1 | [2014-01-01,2014-02-01)
        1 | [2014-03-01,2014-04-01)
        1 | [2014-08-01,2014-09-15)
        2 | [2014-08-01,2014-09-03)
    (4 rows)
    
    Time: 0,203 ms
    test=*# select a.*, l.*, case when l.von_bis @> current_date then 'noch aktuell' else null end from anzeigen a left join laufzeit l on a.id=l.a_id;
     id |    titel    | a_id |         von_bis         |     case
    ----+-------------+------+-------------------------+--------------
      1 | krims krams |    1 | [2014-01-01,2014-02-01) |
      1 | krims krams |    1 | [2014-03-01,2014-04-01) |
      1 | krims krams |    1 | [2014-08-01,2014-09-15) | noch aktuell
      2 | bull shit   |    2 | [2014-08-01,2014-09-03) |
    (4 rows)
    Kleines Problem am Rande für Dich: das ist PostgreSQL. Aber ist ja freie Software.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      der war wirklich gut, danke hat mich angeregt weiter zu probieren. das case kannte ich noch nicht. die ausgabe erfolgt aber bei mir so, dass unten dann nicht 3x krimskrams steht, sonder nur einmal. und da soll dann stehen obs noch aktuell ist oder nicht. habe da ein GROUB BY a.id noch drinn

      Kommentar


      • #4
        GIbt es sowas wie ein Select im select?
        SELECT anzeige.*, laufzeit.*, (SELECT * FROM laufzeit WHERE datum_ende>=$datumheute) AS showme FROM....

        Weil hiermit könnte ich ja überprüfen ob ein aktueller eintrag vorhanden ist und dass dann bei der WHERE abfrage miteinbinden

        Kommentar


        • #5
          Ich glaub ich habs Also habe oben nach dem SELECT: MAX(l.datum_ende) AS lastentry hinzugefügt. So erhalte ich ja den maximalen wert aus der tabelle/spalte. Hierbei kann ich schon selektieren ob es einen aktuellen Eintrag gibt.
          Bei GROUP BY a.id HAVING l.datum_ende<='$heutedatum'
          hinzugefügt.. und nun funktionierts

          Kommentar

          Lädt...
          X