Ankündigung

Einklappen
Keine Ankündigung bisher.

Auf Überschneidung prüfen

Einklappen

Neue Werbung 2019

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

  • Auf Überschneidung prüfen

    Hallo,

    In einer Tabelle speichere ich unter anderem einen Zeitraum mit "datum_von" und "datum_bis" (DATE). Die Tabelle beinhaltet auch noch eine Anzahl (Artikel/ INT).
    Nun möchte ich prüfen, ob sich andere Datensätze mit dem ersteren Überschneiden. D.h. ich möchte prüfen, ob genug Artikel für den bestimmten Zeitraum vorhanden sind.
    Mein Ansatz ist bis jetzt so, das ich den gewünschten Datensatz auslese und in der While-Schleife dann mit einer weiteren Query prüfe, ob andere Datensätze im gleichen Zeitraum vorhanden sind und zähle dann die Anzahl zusammen.
    ( mit Datum Between, etc.).

    Meine Frage:
    Lässt sich das mit einer Query lösen, ohne das in der while-schleife eine weitere Query gesetzt werden muss?

    Die erste Query:
    Code:
    $mysqli = "SELECT
    t1.anzahl * t2.anzahl AS anzahlArtikel,
    t3.artikelname,
    t4.event,
    t4.r_datumVon,
    t4.r_datumBis
    
    FROM
    dispo_event_instanz t1
    INNER JOIN dispo_artikel2eventmaterial t2 ON t1.event_mat_id = t2.emat_id
    INNER JOIN dispo_artikel t3 ON t2.artikel_id = t3.id
    INNER JOIN dispo_events t4 ON t1.eventid = t4.eid
    
    WHERE
    t1.eventid = ".$sql->real_escape_string(eventid)."
    ";
    if( !$result = $sql->query( $mysqli ) ) echo $sql->error;
    while( $row = $result->fetch_object() )
    {
     echo $row->event.' / ' .$row->artikelname.' / ' .$row->anzahlArtikel.'<br />';
    }
    Bin für Tipps und Ansätze dankbar!

  • #2
    Meine Frage:
    Lässt sich das mit einer Query lösen, ohne das in der while-schleife eine weitere Query gesetzt werden muss?
    Meine Antwort:
    Wahrscheinlich schon, jedoch wird wird immer noch nicht klar warum Artikel nur für einen Zeitraum zur Verfügung stehen bzw. wie sich das verhält, da wir deine DB-Struktur nicht kennen.

    Stelle also mal ein SQL Dump deiner Struktur mit einigen Testdaten hier rein und eine Tabelle dazu, wie du dir die Ausgabe vorstellst.

    Kommentar


    • #3
      Zitat von Saturnus Beitrag anzeigen
      Hallo,

      In einer Tabelle speichere ich unter anderem einen Zeitraum mit "datum_von" und "datum_bis" (DATE). Die Tabelle beinhaltet auch noch eine Anzahl (Artikel/ INT).
      Nun möchte ich prüfen, ob sich andere Datensätze mit dem ersteren Überschneiden.
      Bin für Tipps und Ansätze dankbar!
      Erkläre erst einmal präzise, was Du hast und suchst. Es gibt keinen 'ersteren' Datensatz.

      Wenn Du prüfen willst, ob sich Datensätze mit gleichem Artikel im Zeitraum von-bis überschneiden, klingt das fast so, als sei dies in Deinem Datenmodell nicht erwünscht. Falls dem so ist solltest Du das gleich beim Design der DB mittels Constraints ausschließen anstatt das im Nachganz zu prüfen. Da ist es bereits zu spät.
      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

      Kommentar

      Lädt...
      X